我正在尝试使用带有以下代码的事件工具包在iOS应用中添加事件:
EKEventStore *store = [[EKEventStore alloc] init];
[store requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) {
if (!granted) { return; }
dispatch_async(dispatch_get_main_queue(), ^{
EKEvent *event = [EKEvent eventWithEventStore:store];
event.title = eventName;
event.startDate = [NSDate dateFromString:[NSString stringWithFormat:@"%@ %@",[arrEvent objectAtIndex:1],[arrEvent objectAtIndex:2]] withFormat:@"MM/dd/yyyy HH:mm"];
event.endDate = [NSDate dateFromString:[NSString stringWithFormat:@"%@ %@",[arrEvent objectAtIndex:1],[arrEvent objectAtIndex:3]] withFormat:@"MM/dd/yyyy HH:mm"];
[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
NSLog(@"%@",savedEventId);
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Event added to calendar" message:nil delegate:self cancelButtonTitle:@"OK" otherButtonTitles:@"View Calendar", nil];
alert.tag = 101;
[alert show];
});
}];
但是我被授予了假,所以它不会添加事件。即使我重置了我的模拟器,它也无法在我的模拟器和设备中工作。相同的代码适用于我的另一个应用程序。有人可以建议我应该做些什么吗? 修改:错误始终为零
答案 0 :(得分:1)
首次启动应用时,系统会向用户显示询问权限的消息,只有用户授予权限,应用才能访问日历。在您的情况下,您拒绝了日历的许可。
要解决此问题,请转到设置 - > - >允许访问日历= YES。
答案 1 :(得分:0)
似乎您每次都要求获取访问权限。您应该首先检查授权状态,如果没有确定,则只需要授权。首先使用“authorizationStatusForEntityType”检查它并创建一个新方法来保存事件,而不是在“requestAccessToEntityType”中。