7

ローカルの永続ストア(CoreData)を維持し、FlickrなどのWebサービスとの同期を維持するアプリを構築するためのサンプルアプリまたはよりアーキテクチャに関するディスカッションを探しています。私の場合はSalesforceですが、パターンはFlickr、Twitter、IMAPなどの多くのアプリに似ているはずです。

質問の例:同期を呼び出すのに最適なポイントはどこですか?ローカルの変更を維持するための実証済みのデータ構造-同期されていない変更ごとにローカルストアで「変更された」BOOLを維持します。レコードレベルのフラグよりもフィールドレベルのフラグの方がいいですか)?

もちろん、レコードの量(100)と変更(1日あたり10)、および競合の可能性(私の場合はフィールドレベルでは低い)を知って、これを自分で最適化する必要があります。

4

1 に答える 1

3

これが私がこれにアプローチする方法です:

  1. オンラインデータベースをミラーリングするローカルCoreData/Sqliteデータベースをモデル化することから始めます。
  2. NSDatelastModifiedプロパティを各テーブルのすべての行に追加します。これにより、フィールドレベルではなく、レコードレベルで変更を追跡できるようになります。これにより、同期の複雑さが軽減され、ほとんどの実際のシナリオでは、レコードレベルの同期で十分です。
  3. アプリの起動時に自動同期を実行し、ナビゲーションバーに目立つ[同期]ボタンも表示します。このようにして、ユーザーは、アプリが長期間後に起動したときに常に更新されたデータセットを持ち、1日の間に最新の変更を同期できます。アプリの使用中にバックグラウンド同期を行うことは避けます。これにより、他のことに取り組むときにアプリがより複雑になり、エラーが発生しやすくなります。したがって、残りが機能するまで、バックグラウンド/自動同期の作業を延期します。
  4. 起動時とオンデマンドで同期が適切に機能するようになったら、バックグラウンド同期をサポートしようとします。また、[同期]ボタンを削除して、ユーザーが同期について考える必要がないようにします(ユーザーに関する限り、常に最新の状態になっています)。しかし、これは長期的な機能強化であり、「オンデマンド」で同期する作業が確実に行われた後にのみ試行します。

これがあなたが始めるのに役立つことを願っています。あなたがこれについて違った考えをするならば、私は聞きたいです。

于 2012-05-21T03:23:12.110 に答える