1

iOS の新しいメソッド calendarItemWithIdentifier でカレンダー イベントを検索しようとしています。イベントがサーバーと同期された後に識別子が変更されるため、eventWithIdentifier を使用できません。calendarItemIdentifier はそうではありません。

ただし、calendarItemWithIdentifier は常に (null) を返します。

    EKEventStore *store = [[EKEventStore alloc] init];

[store requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) {
    if (granted) {

        // Create event.
        EKEvent *event = [EKEvent eventWithEventStore:store];
        event.title = self.title;
        event.startDate = [[NSDate date] dateByAddingTimeInterval:3600];
        event.endDate = [[NSDate date] dateByAddingTimeInterval:7200];
        event.timeZone = [NSTimeZone defaultTimeZone];
        event.calendar = [store defaultCalendarForNewEvents];

        BOOL success = [store saveEvent:event span:EKSpanThisEvent commit:YES error:&error];
        if (success)
        {
            NSString *calendarItemIdentifier = event.calendarItemIdentifier;
            NSLog(@"Assigned identifier: %@", calendarItemIdentifier);

            // Look up the event in the calendar.
            event = (EKEvent *)[store calendarItemWithIdentifier:calendarItemIdentifier];
            if (event) {
                NSLog(@"FOUND");
            } else {
                NSLog(@"NOT FOUND");
            }
        }
    }

}];

ログから:

2013-01-13 10:32:52.042 CalendarIntegration[6095:1303] Assigned identifier: C5FD3792-EBF1-4766-B27D-2767E5C8F3BE
2013-01-13 10:32:52.043 CalendarIntegration[6095:1303] NOT FOUND

助けていただければ幸いです。

4

1 に答える 1

0

ドキュメントによると、この動作は期待どおりです

カレンダーと完全に同期すると、この識別子が失われます。他のプロパティをキャッシュすることにより、識別子が取得できなくなったカレンダーを処理するための計画を立てる必要があります。

于 2013-08-12T18:39:03.383 に答える