コアデータでのRestKitの使用ユーザーがインターネットに接続せずにオブジェクトにフラグを付けてコアデータで保存することにより、オブジェクトを追加、編集、または削除するときにオフラインサポートを提供しています。
インターネットが再び利用可能になった場合は、追加/編集/削除されたすべてのオブジェクトをフェッチして配列に保存し、通常のメソッドを使用して各アイテムをループしてサーバーに配置します。
配列のリスト
-fetchedAddedCompanies
-fetchedEditedCompanies
-fetchedAddedContacts
-fetchedEditedContacts
-fetchedDeletedContacts
Initメソッド(編集された会社の例)
// Added Companies
...
// Edited Companies
for (Company *tempObj in fetchedAddedCompanies)
{
// Find keys for selected languages
[self updateAccountToServer:tempObj:addCompanyContext];
}
// ...
updateAccountToServerの最後に、サーバーへのマッピングを含むオブジェクト(self.company)を投稿します。
...
[objectManager postObject:self.company mapResponseWith:[companyMapper inverseMapping] delegate:self];
...
質問
すべての編集/削除メソッドとは対照的に、サーバーは新しく作成されたオブジェクトごとにIDを返すため、ユーザーがいくつかのオブジェクトを更新し、特別なものがいくつかの新しいオブジェクトを追加したときに、より効率的なソリューションを探しています。保存されます。
1)編集されたオブジェクトごとにupdateAccountToServerなどを使用せず、代わりにオブジェクトの配列を送信します
2)RKObjectManagerと一緒にRKRequestQueueを使用します(この質問と適切な回答に関して)
私の意見では、1)各リクエストのresourcePathに一意のIDが含まれているため、実装が難しいため、2)を試しましたが、を使用して各リクエストのマッピングをバインドする可能性がありません。
[syncQueue addRequest:[[RKObjectManager sharedManager] objectLoaderWithResourcePath:tempString delegate:self]];
あなたのアイデアをありがとう!