3

アプリケーションで Web サービスからイベントを取得します。すべてのイベントには一意の識別子があります。

ユーザーがそのイベントをネイティブ カレンダーにプッシュしたい場合は、そのイベントをネイティブに保存しますが、EKEvent オブジェクトの eventIdentifier プロパティを設定できないため、そのイベントがネイティブ カレンダーに既に存在するかどうかを知るにはどうすればよいでしょうか。

EKEvent をサブクラス化し、独自の識別子を追加してみました

eventStore = [[EKEventStore alloc] init];
MyEvent *event = [MyEvent eventWithEventStore:eventStore];
event.myEventIdentifier = @"MyEventIdentifier";
[event setCalendar:[eventStore defaultCalendarForNewEvents]];
event.startDate = [NSDate date];
event.endDate = [NSDate dateWithTimeIntervalSinceNow:10000];
event.title = @"MyEventTitle";
[eventStore saveEvent:event span:EKSpanThisEvent error:nil];

しかし、イベントオブジェクトを取得すると、サブクラスオブジェクトを取得できず、呼び出したときに例外がスローされました

[event valueForKey:@"MyEventIdentifier"];

ご覧のとおり、EKEvent クラスで eventIdentifier プロパティを設定できず、EKEvent のサブクラス化も機能しません。

必要な機能を実現するにはどうすればよいですか、何か提案はありますか?

4

1 に答える 1

3

似たようなものを EKEvent で調べていますが、EKEvent にはアクセスできる識別子があります。

イベントを保存すると、その識別子にアクセスできます。

NSString *eventID = [NSString stringWithFormat:@"%@", event.eventIdentifier];

この文字列を保存し、それを使用してイベントを削除しますが、event.eventIdentifier は読み取り専用であることに注意してください。

于 2012-07-31T14:34:29.063 に答える