4

アプリで使用してリマインダー イベントを追加Eventkit.frameworkしますが、アプリでリマインダー イベントを表示すると、iPhone ですべてのリマインダー イベントが表示されますが、追加したリマインダー イベントのみを表示したいです。

モーダルビューコントローラーを使用してイベントを追加するための私のコードは次のとおりです

EKEventEditViewController *addController = [[EKEventEditViewController alloc] initWithNibName:nil bundle:nil];
EKEvent * eve = [EKEvent eventWithEventStore:self.eventStore];

addController.eventStore = self.eventStore;
addController.event = eve;
[self presentModalViewController:addController animated:YES]; 

リマインダーイベントを取得するコードは次のとおりです

self.eventStore = [[EKEventStore alloc] init];
self.eventsList = [[NSMutableArray alloc] initWithArray:0];

self.defaultCalendar = [self.eventStore defaultCalendarForNewEvents];
self.navigationController.delegate = self;
[self.eventsList addObjectsFromArray:[self fetchEventsForToday]];

フェッチ イベント メソッド

- (NSArray *)fetchEventsForToday {

    NSDate *startDate = [NSDate date];
    NSDate *endDate = [NSDate dateWithTimeIntervalSinceNow:86400];

    NSArray *calendarArray = [NSArray arrayWithObject:defaultCalendar];

    NSPredicate *predicate = [self.eventStore predicateForEventsWithStartDate:startDate endDate:endDate
                                                                    calendars:calendarArray];

    NSArray *events = [self.eventStore eventsMatchingPredicate:predicate];
    return events;
}
4

1 に答える 1

3

すべてのイベントには、すべてのイベントを一意に識別する文字列である eventIdentifier プロパティがあります。アプリがイベントを追加すると、アプリケーション データに eventIdentifiers を保存し、起動するたびにそのリストを読み込むことができます。[self.eventStore eventWithIdentifier:identifier];が有効な EKEvent を返すことを確認することで、イベントが削除されていないことを確認できます。アプリが追加したイベントのリストを表示する場合は、保存した識別子に一致するイベントを取得するだけです。識別子が再利用されることはないため、このシステムは、ユーザーがアプリ外でイベントを追加および削除しても影響を受けません。

于 2013-05-29T04:28:21.390 に答える