2

Restkitを使用してオンライン/オフラインのiOSアプリを作成していますが、オフライン期間後に同期するかどうかわかりません。

私はこれを考えていました:

  • オフラインでは、ローカル管理対象オブジェクトを更新し、フィールドlocal_changesをtrueにプッシュします
  • インターネットに戻ったら、各GETリクエストの前に、PUTリクエストを使用してlocal_changes=trueのすべてのモデルを送信します
  • 新しいアイテムの場合は、POSTリクエストを送信します。

私の問題は、GETリクエストがGETリクエストの終了を待たずに送信されるため、古いデータを取得したことです(データは変更されていません)。

これについてどう思いますか?それを行うためのより良い方法を見つけましたか?

4

1 に答える 1

2

これは遅いと思いますが、最近、これを行うための良い方法を探しています。

私は現在、というAFHTTPClientクラスのメソッドを使用していsetReachabilityStatusChangeBlock:(void (^)(AFNetworkReachabilityStatus status))blockます。Restkit objectManagerをセットアップしたAppDelegateでは、AFHTTPClientオブジェクトでこのメソッドを実行しています。メソッド内に、ネットワークの到達可能性をチェックするifステートメントがあります。到達できない場合は、現在の日付をAppDelegateに保存します。到達可能で、self.offline!= nilの場合は、オンラインに戻ったばかりであることがわかります。

この時点で、エンティティの「updatedAt」フィールドを(NSPredicatesを使用して)チェックして、最後にオフラインにしたときよりも後で更新または作成されたかどうかを確認できるはずです。次に、それに応じてPUT/POSTを実行できます。

于 2014-05-07T03:18:57.047 に答える