2

ユーザーがカレンダーから選択したイベントを記憶する必要があるアプリに取り組んでおり、定期的なイベントで問題が発生しました。

繰り返し発生しないイベントの場合は、eventIdentifier を保存し、必要なときにイベント ストアからイベントをフェッチするだけです。

ただし、定期的なイベントはすべて同じ eventIdentifier を共有します。(eventIdentifier に基づいて) イベントを取得するためにイベント ストアに戻ると、ユーザーが選択したイベントの N 回目の繰り返しではなく、繰り返しチェーンの最初のイベントを取得します。

EventKit は NSCoding をサポートしていないため、EKEvent オブジェクト全体をアーカイブしても、ユーザーが選択したイベントを保持できません。

イベントストアから正しいイベントを取得できるように、eventIdentifier と開始日と終了日を保存することを検討しています...しかし、それはかなり面倒で、アプリの起動の間にユーザーがカレンダーで行った変更を追跡するのが面倒になる可能性があります。

何か考えや提案はありますか?

4

1 に答える 1

0

繰り返し発生しないイベントであっても、イベント ID だけでは十分ではありません。実際、ユーザーがイベントを別のカレンダーに移動すると、変更される可能性があります。定期的なイベントの場合、発生を切り離したり、繰り返しを分割したりすると、変更される可能性があります。したがって、情報のサブセット (タイトル、開始日、期日など) を使用してイベントを検索するのが一般的です。イベント識別子に依存しないでください。

残念ながら、フレームワークはイベントの生データを提供しません。指定された間隔で発生したすべてのイベントを提供するだけです。したがって、(フレームワークを使用して) 単一の繰り返しイベントを取得し、その繰り返しを拡張してn回目の発生を取得する可能性はありません。取得したイベントを見つけるために、取得したイベントを手動で後処理する必要があります。に興味があります。

ここでの問題は、提供されている API が同期を目的としていないことです。多くの開発者は、Radar を使用してバグ/機能リクエストを提出することで、これについて不平を言っています。これまで Apple の回答は、同期は自動的に行われるため、API は別の目的を果たしているというものでした。ただし、これは iTunes を介して同期する場合には当てはまりますが、プログラムによって同期する場合には当てはまりません。

于 2011-04-29T02:06:58.313 に答える