【发布时间】:2014-02-07 07:42:03
【问题描述】:
我正在尝试以一种简单的方式从网络服务同步我的数据。我使用 AFNetworking 下载我的数据,并在每个对象上使用唯一标识符,我想插入、删除或更新该数据。
问题在于,使用 Core Data,您必须在 NSObjectManagedContext 中实际插入对象来实例化 NSManagedObjects。像这样:
MyModel *model = (MyModel *)[NSEntityDescription insertNewObjectForEntityForName:@"MyModel" inManagedObjectContext:moc];
model.value = [jsonDict objectForKey:@"value"];
因此,当我从 Web 服务获取数据时,我会立即将它们插入到 Core Data 中。所以没有真正的同步:我只是事先删除所有内容,然后插入从我的网络服务返回的内容。
我想有更好的方法可以做到这一点,但我不知道怎么做。有什么帮助吗?
【问题讨论】:
-
我在这里回答了一个类似的问题:stackoverflow.com/questions/5035132/…希望它有所帮助。
-
通常我希望在创建新对象之前尝试查找现有对象,这样我就可以更新而不是替换。
-
您的问题没有简单的答案。将远程服务器的数据与可能长时间离线的移动设备同步,实际上是一个“难题”。我敢说,您可以在网络(以及 SO)中找到的所有“简单”解决方案、建议和答案在实际场景中不起作用,而 所有 都可以有一些明显的和更微妙的问题。在寻找提供“同步”解决方案的第三方服务时,您还应该非常小心。通常,这仅包括一个非常基本的功能集。但也许,这对您的应用来说已经足够了。
标签: ios web-services core-data