如何修复EKErrorDomain Code = 1"没有设置日历

Joh*_*tty 6 calendar ios eventkit

我想创建一个日历条目到iPhone日历,我尝试了以下代码

        EKEventStore *eventStore = [[EKEventStore alloc] init];
        EKEvent *event  = [EKEvent eventWithEventStore:eventStore];
        event.title     = self.selectedPost.postTitle;
        event.notes     = self.selectedPost.postContent;
        event.startDate =  self.selectedPost.startDate;
        event.endDate   =  self.selectedPost.endDate;

        EKCalendar *targetCalendar = nil;
        targetCalendar = [eventStore defaultCalendarForNewEvents];
        NSLog(@"%@",targetCalendar);
        [event setCalendar:targetCalendar];
        NSError *err;
        [eventStore saveEvent:event span:EKSpanThisEvent error:&err];
        UIAlertView *alert = nil;
        NSLog(@"err %@",err);
        if (err) {
            alert = [[UIAlertView alloc] initWithTitle:@"Error" message:[err localizedDescription] delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil];
        }
        else{
            alert = [[UIAlertView alloc] initWithTitle:@"Success" message:@"Added to calender" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil];
        }

        [alert show];
Run Code Online (Sandbox Code Playgroud)

但结果是

2013-01-15 22:31:34.682 Project[40863:907] defaultCalendarForNewEvents failed: Error Domain=EKCADErrorDomain Code=1013 "The operation couldn’t be completed. (EKCADErrorDomain error 1013.)"
2013-01-15 22:31:34.683 Project[40863:907] (null)
2013-01-15 22:31:34.690 Project[40863:907] err Error Domain=EKErrorDomain Code=1 "No calendar has been set." UserInfo=0x1d535ba0 {NSLocalizedDescription=No calendar has been set.}
Run Code Online (Sandbox Code Playgroud)

我知道这是因为

[eventStore defaultCalendarForNewEvents];
Run Code Online (Sandbox Code Playgroud)

返回null.我试过[eventStore calendarWithIdentifier:event.calendarItemIdentifier]; 和一些其他代码但相同的结果如何解决这个任何想法

Jef*_*ith 7

如果这是在iOS 6.0或更高版本上,您必须首先请求访问用户的日历,然后EventKit将使用该方法将它们交给您- [EKEventStore requestAccessToEntityType:completion:]

查看" 日历和提醒编程指南"中给出的示例