Iphone EKEvent在iOS5中被破坏了吗?
我的EKEvent工作正常,并在iOS4中完美地发布到Calendar.app。现在突然间,它在iOS5或ios6中不起作用了 我在网上搜索了几个小时,似乎找不到解决办法Iphone EKEvent在iOS5中被破坏了吗?,iphone,objective-c,cocoa-touch,ekevent,Iphone,Objective C,Cocoa Touch,Ekevent,我的EKEvent工作正常,并在iOS4中完美地发布到Calendar.app。现在突然间,它在iOS5或ios6中不起作用了 我在网上搜索了几个小时,似乎找不到解决办法 NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init]; [dateFormat setDateFormat:@"yyyyMMddHHmm"]; NSLog(@"eventDateTime: %@", eventDateTime); NSDate *date
NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyyMMddHHmm"];
NSLog(@"eventDateTime: %@", eventDateTime);
NSDate *date = [dateFormat dateFromString:@"201207202030"];
eventStore = [[EKEventStore alloc] init];
//defaultCalendar = [eventStore defaultCalendarForNewEvents];
venueEvent = [EKEvent eventWithEventStore:eventStore];
//venueEvent.calendar = Calendar;
venueEvent.title = event.name;
venueEvent.location = @"The Blvd Tavern";
venueEvent.startDate = date;
venueEvent.endDate = [[NSDate alloc] initWithTimeInterval:14400 sinceDate:venueEvent.startDate];
EKAlarm *eventAlarm1 = [EKAlarm alarmWithRelativeOffset:-28800];
NSArray *alarmArray = [[NSArray alloc] initWithObjects:eventAlarm1, nil];
venueEvent.alarms = alarmArray;
[venueEvent setCalendar:[eventStore defaultCalendarForNewEvents]];
//[venueEvent setCalendar:defaultCalendar];
NSError *err = [[NSError alloc] init];
[eventStore saveEvent:venueEvent span:EKSpanThisEvent error:&err];
NSLog(@"%@", err);
当我运行此代码时,我会一直记录此错误日志
Error Domain=EKErrorDomain Code=1“未设置日历。”UserInfo=0x1cd2a350{NSLocalizedDescription=未设置日历。}
在修改日历之前,您需要向用户请求使用日历的权限。试试这个:
if([eventStore respondsToSelector:@selector(requestAccessToEntityType:完成:)])){
[eventStore requestAccessToEntityType:eEntityTypeEvent completion:^(已授予布尔,N错误*错误){
//在这里做事
}
}
来源:您导入了EvenKit和framework吗?是的!我将问题追溯到[eventStore defaultCalenderForNewEvents],默认情况下不再允许修改?是否有任何方法要求用户更改此设置?问题是…您应该对自己进行身份验证以访问日历..没有身份验证,您只能获取所有内容的
nil
指针。这就是您收到此错误消息的原因。
float version = [[UIDevice currentDevice].systemVersion floatValue];
if(version >= 6.0){
EKAuthorizationStatus status = [EKEventStore authorizationStatusForEntityType:EKEntityTypeEvent];
if(status == EKAuthorizationStatusNotDetermined){
[store requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error){
if(!granted){
Alert!
}
}];
}else if(status == EKAuthorizationStatusDenied){
Alert!
}
}