添加事件不会显示在iPhone日历中

时间:2013-10-02 16:02:52

标签: iphone ios objective-c events calendar

尝试以程序方式将事件添加到iPhone日历中。 我没有得到任何错误,但也没有任何东西被添加到日历中。 savedEventId(下面)返回(null) 这是代码:

方法

添加活动:

if(accessGranted){
EKEvent *event = [EKEvent eventWithEventStore:store];
event.startDate =[NSDate date];
event.endDate = [event.startDate dateByAddingTimeInterval:60*60]; 
[event setCalendar:[store defaultCalendarForNewEvents]];
NSError *err = nil;
[store saveEvent:event span:EKSpanThisEvent commit:YES error:&err];
NSString *savedEventId = event.eventIdentifier;
}

访问日历

在viewDidLoad中:

store = [[EKEventStore alloc] init];
accessGranted=FALSE;
[self.store requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) {
        accessGranted=TRUE;
    }];
<。>文件中的

    #import <EventKit/EventKit.h>

    @interface

    EKEventStore *store;
    BOOL accessGranted;

    @property(nonatomic, retain) EKEventStore *store;
<。>文件中的

@synthesize store; 

1 个答案:

答案 0 :(得分:1)

请尝试使用此代码:

EKEventStore *store = [[EKEventStore alloc] init];
[store requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) {
    if (!granted) { return; }
    EKEvent *event = [EKEvent eventWithEventStore:store];
    event.title = @"Event Title";
    event.startDate = [NSDate date]; //today
    event.endDate = [event.startDate dateByAddingTimeInterval:60*60];  //set 1 hour meeting
    [event setCalendar:[store defaultCalendarForNewEvents]];
    NSError *err = nil;
    [store saveEvent:event span:EKSpanThisEvent commit:YES error:&err];
    NSString *savedEventId = event.eventIdentifier;  //this is so you can access this event later
}];

请记住:

  • 通过“requestAccessToEntityType:completion:”请求访问用户的日历

  • 提交您的活动

相关问题