2011-07-09 6 views
1

私はそのコンテンツを保存するためにcoredataを使用するiphoneアプリを持っています。ユーザーは、モバイルデバイス(ipod/iphone/ipad)間でデータを同期する方法を提供できるかどうか尋ねます。今のところ、私はこれを達成する方法について考えていません。 私はzsyncを見つけましたが、これはアプリケーションのosxバージョン(私は持っていません)に依存するようです。私はまた、今後のicloudsの同期機能について読んで、それは私が必要としているようだ - しかし、私はcoredataの内容を同期することはできませんが、テキストベースのコンテンツ(xmlのストレージファイルなど)と思う。これは本当ですか?デバイス間でコアデータを同期する方法は?

私が考えていた別の方法は、イベントキットAPIを悪用してユーザ提供のカレンダーを介して同期することでした。私のアプリは主にイベントを管理しているので、カレンダーを使って同期することで、ユーザーカレンダー(coredataストレージに加えて)にオプションで保存することができます。しかし、私は同期が壊れるかもしれないと思います。ユーザーがカレンダー全体を同期させないことを選択した場合、デバイスの設定/アカウント設定では3か月分しか使用できません。

誰も私のアプローチがどのようになるべきかというアイデアを得ましたか?任意のヒント?

答えて

1

デバイスをデバイスと同期させることは、それが達成しようとしている場合は非常に難しいことです。独自のディスカバリーとデータ転送プロトコルを実装し、そのような方法で作業することもできますが、かなり手間がかかります。

サーバーからデバイスへのデバイスの同期は、ある種の登録/ログインシステムのサーバーを既に持っていることを前提として、もう少し簡単です。次に、現在のデータベース状態をサーバーまで通信し、サーバーから他の装置に再び戻す方法が必要です。もう一度これを行うにはかなりの作業が必要ですが、少なくとも、どのデバイスを他のデバイスと同期させるか、どのデバイスからどのデバイスにデータを転送するかというロジックは、サーバーの動作に暗黙のうちにあります。

iCloudの場合、同期するプログラムコンテンツはUIDocumentから派生する必要があるため、一般的なCore Dataエンティティでは役に立ちません。

カスタムコードなしで、あるデバイスから別のデバイスにすべてのコアデータコンテンツを同期するすぐに使えるソリューションを探しているなら、実際にはありません。あなたが合理的に得ることができる最も近いのは、あなたのアプリがあるデバイスから別のデバイスに使用する.sqliteファイル全体を出荷し、ターゲットデバイス.sqliteファイルを上書きすることです。あなたの同期が単方向である必要がある場合はうまく動作しますが、明らかに他のユースケースには適していません。おそらく、iCloudでこのモデルを使用して、アプリケーションの全体の.sqliteファイルをアトミックエンティティとして同期させることができます。

関連する問題