2

iOS4でEKEventが正常に機能し、Calendar.appに完全に投稿しました。突然、iOS5または6で動作しなくなりました..?

Web を何時間も検索しましたが、解決策が見つからないようですか?

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);

このコードを実行すると、このエラーログを取得し続けます

エラー Domain=EKErrorDomain Code=1 「カレンダーが設定されていません。」UserInfo=0x1cd2a350 {NSLocalizedDescription=カレンダーが設定されていません。}

4

2 に答える 2

4

カレンダーを変更する前に、カレンダーを使用する許可をユーザーに求める必要があります。これを試して:

if([eventStore respondsToSelector:@selector(requestAccessToEntityType:completion:)]) { [eventStore requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) { // do stuff here } }

ソース: https://jeboyer.wordpress.com/2012/09/26/handling-access-to-calendars-in-ios-6-2/

于 2012-10-02T21:52:31.043 に答える
2
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!

    }
}
于 2013-01-23T08:02:05.233 に答える