将 RestKit 与 Core Data 一起使用当用户在没有 Internet 连接的情况下添加、编辑或删除对象时,我通过标记对象并使用 Core Data 保存它们来提供离线支持。
如果互联网再次可用,我将获取所有添加/编辑/删除的对象,将它们保存在数组中,并正确知道使用常规方法并循环每个项目以将它们放在服务器上。
数组列表
- fetchedAddedCompanies
- fetchedEditedCompanies
- fetchedAddedContacts
- fetchedEditedContacts
- fetchedDeletedContacts
初始化方法(以编辑公司为例)
// 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一起使用(关于这个问题和一个好的答案)
在我看来 1) 将很难实现,因为每个请求的 resourcePath 都包含一个唯一的 ID,所以我尝试过 2) 但缺少使用绑定每个请求的映射的可能性
[syncQueue addRequest:[[RKObjectManager sharedManager] objectLoaderWithResourcePath:tempString delegate:self]];
谢谢你的想法!