1

私のアプリでは、EventKitAPIを使用してデバイスのカレンダーにアクセスし、ビューに表示しています。ただし、ネットワークカレンダーを使用する場合はEKEventStore、カレンダーを再読み込みして実際の/最新のコンテンツを返すのではなく、クエリ時にある種のキャッシュ/ローカルイベントリストのみを返すと思われます。
代わりにネイティブカレンダーアプリを起動すると、アプリはすべてのカレンダーを更新/再読み込みし、ネットワーク共有カレンダーを同期します。アプリに戻ると、新しく同期されたイベントも表示されます。

これに加えて、アプリを介してイベントを変更(削除/更新)するとEventKit / EventKitUI、Macのカレンダーなどに同期されないことがわかりました。

簡単に言うと、EventKit/ iOS SDKでネットワーク共有カレンダーとの同期を強制する方法はありますか?

4

1 に答える 1

10
  1. インスタンスの-(void)refreshSourcesIfNecessaryメソッドを使用して、次のことができます。EKEventStore

    ...ローカルデータが古くなっている場合は、リモートソースから新しいデータをプルします。

    これにより、最新のリモートデータをフェッチして、ローカルカレンダーストアを強制的に更新します。これは、ネイティブiOSカレンダーアプリが更新を促すために使用している方法だと思います。

  2. 削除および更新されたカレンダーイベントがMacと同期しない問題については、変更を加えた後、インスタンスで-(void)commit:EKEventStoreを呼び出していますか?

    または、カレンダーとイベントを保存および削除するためのメソッドの選択肢がありEKEventStore、変更をすぐにコミットできるコミットパラメーターも提供します。リンクを投稿しますが、新しいユーザーとして使用できるハイパーリンクは2つだけです。

    - (void)saveEvent:span:commit:error:
    - (void)removeEvent:span:commit:error:

    これらのイベントがクラウドベースのカレンダーに追加されていると仮定すると、これは変更をMacに同期する効果があるはずです。

于 2013-01-26T13:02:54.180 に答える