Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone EKEvent在iOS5中被破坏了吗?_Iphone_Objective C_Cocoa Touch_Ekevent - Fatal编程技术网

Iphone EKEvent在iOS5中被破坏了吗?

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

我的EKEvent工作正常,并在iOS4中完美地发布到Calendar.app。现在突然间,它在iOS5或ios6中不起作用了

我在网上搜索了几个小时,似乎找不到解决办法

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!

    }
}