7

最終的にiPhone/iPadユニバーサルアプリケーションになるCoreDataアプリがあります。

アプリを実行しているiPhoneとiPadの両方がデータを共有できるように、クラウド同期を実装したいと思います。最近リリースされたDropboxAPIを使用する予定です。誰かがこれを行うための最善の方法について何か考えがありますか?Dropbox APIを使用すると、アプリでファイルをクラウドに保存できます。私が考えていたのは、アプリのデータベース(sqlite)をクラウドに元々保存してからダウンロードすることでしたが、その方法を使用すると、(データベース全体を置き換えるのではなく)変更をマージするのが非常に困難になることに気付きました。

どんな考えでもありがたいです。ありがとう。

4

4 に答える 4

5

それを回避できる場合、同期を行う最も簡単な方法は (はるかに)ローカルにデータの3 つのコピーを作成することです。最後にアップロードしたコピー (「古い」)、ローカルの変更によって生成されたコピー (「私の」) です。そしてコピーがサーバーからダウンロードされました(「彼らの」)

次に、3 つのファイルすべてのすべてのレコードを並べ替え、1 つずつ調べます。

  • old == mineの場合、theirsを使用
  • そうでなければ古い==彼らのものなら、私のものを使う
  • そうでなければ、競合があります。それについて何かをしてください(たとえば、常に私のものを使用してください、別名「最後の作家が勝ちます」)

「私のもの」、「彼らの」、または「古い」は存在しない可能性があることに注意してください。その場合でも上記のルールが適用されます。選択した結果が「存在しません」の場合は、出力ファイルのレコードを削除する必要があります。

最後に、結果のファイルをサーバーにアップロードして、次の人の「自分の」データベースにします。次に、新しいファイルをローカルの「古い」データベースと「自分の」データベースにコピーします。

(上記よりもスペース効率の良いアルゴリズムがあります...しかし、簡単なものはありません:) そして、特にファイルを圧縮する場合、ディスクスペースは最近かなり安価です。)

于 2010-06-07T04:56:44.380 に答える
1

同期に別の方法を使用することもできます。扱うデータの種類は何ですか?

軽量の Rails バックエンドを使用して多くの成功を収めました。

于 2010-06-02T23:48:31.293 に答える
0

データを共有するためにGameKitを調べることができます。それ以外の場合は、中間ファイル サーバーとの同期を管理するだけで済みます。

于 2010-06-02T23:45:36.917 に答える
0

おそらく、データをネイティブの sqlite 形式以外の形式にエクスポートする必要があります。このようなものを設計する場合、おそらくJSONが最適な形式になると思います。

ドロップボックス API は見ていませんが、ファイル全体ではなく、ファイルの差分のアップロードとダウンロードをサポートしていますよね? API の動作方法によっては、アプリケーションに「差分」形式を理解させ、それを使用する方が簡単な場合があります...

于 2010-06-02T23:56:34.820 に答える