core-data – RestKit – 离线存储后发送添加/编辑/删除的对象

将RestKit与核心数据一起使用当用户通过标记对象并使用Core Data保存对象来添加,编辑或删除没有Internet连接的对象时,我将提供脱机支持.

如果互联网再次可用,我将获取所有添加/编辑/删除的对象,将它们保存在数组中,并且知道使用常规方法并循环每个项目以将它们放在服务器上.

数组列表
– fetchedAdded公司
– 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)将RKRequestQueue与RKObjectManager一起使用(regarding this question and a good answer)

在我看来1)将很难实现,因为每个请求的resourcePath包含一个唯一的ID,所以我尝试过2)但是缺少使用每个请求绑定映射的可能性

[syncQueue addRequest:[[RKObjectManager sharedManager] objectLoaderWithResourcePath:tempString delegate:self]]; 

谢谢你的想法!

最佳答案 我和其他一些人正积极致力于开发分支,以自动将其集成到RestKit中.

我们正在RK内部实现一个同步管理器,它监视NSManagedObjectContext的变化,如果网络不可用,则将这些请求排队,直到网络返回.

我们希望对代码有更多的帮助/想法,所以如果您可以在此页面上告诉我们更多有关您的用例的信息:

https://github.com/RestKit/RestKit/pull/573

点赞