-1

双方向同期に RESTKit を使用することは可能ですか? RESTKit と CoreDate をいじってみました。これで、REST サービスからすべてのデータをダウンロードできるようになり、CoreDate のすべての変更 (オブジェクトの作成/変更/削除) が RESTKit によって上書きされます。

ここで、両方のバージョン (ローカル バージョンまたはリモート バージョン) から選択したいと考えています。どうすればいいですか?マッピングを操作する方法などはありますか?

更新: 私のアプリは、いくつかの変更の後、または特定の遅延の後に同期する必要があります (難しくありません)。すべてのオブジェクトには変更日があります。今までは、新しいものを保持したいと思います(それらがローカルのものと等しい場合)。オブジェクトをマージする方法を変更するためにRestKitが作成されることを願っています。設定できるブロックのようなもので、両方のオブジェクトを取得し、マージされたオブジェクトを返すことができます。

これまでに得たもの: RestKit を介してオブジェクトをロードしますが、永続化しません。また、ローカル オブジェクトを格納する CoreData ストアもセットアップします。リモート オブジェクトをロードした後、自分自身の同期を開始します。最初にペアを検索してから、どれを取るか、削除するか、作成するか、上書きするかなどを決定します...

しかし、これは膨大な量の作業であり、RestKit も同様のことを行っていると思います。私の要件に合わせてRestKitの戦略を単純に変更してみませんか。

さて、これは「同期ダウン」のことです。この後、同期されたデータ セットをサービスに書き戻すことができました。変更はそれほど頻繁ではないため、新しい変更を確認する必要はありません。

もう少しわかりやすくなったといいのですが

4

2 に答える 2

1

本当にやりたいことは、入ってくるデータを検証することです。

RestKit は CoreData を使用しているため、CoreData に組み込まれている検証を自動的に使用します (こちらを参照) 。

以下は、日付が以前の日付に決して変更されないようにする例です。

- (BOOL) validateChangeDate:(id *)ioValue error: (NSError **)outError {

    if ([[*ioValue laterDate:self.changeDate] compare:self.changeDate] == NSOrderedSame)
        *ioValue = self.changeDate;
    return YES;
}

注: 日付を変更する必要があるかどうかをテストするためのより良い/より高速な方法があるかもしれません
注 2: ドキュメントによると、RestKit が拒否された値を確認すると、オブジェクト全体が失敗します。常に YES を返し、着信日を変更する理由
注 3: CoreData ドキュメントがここで述べているため、必要がない限り、値を変更したくありません。

于 2014-07-29T17:41:47.267 に答える