我有一个基于CoreData的应用程序是使用web服务填充的。当用户更改我的web服务中某个对象的数据时,我希望将该更改推送回我的web服务。
实现这一目标的最佳实践是什么?我可能有很多需要发送的changes对象,但用户可能没有连接,我希望它在后台发生。
是否在CoreData中标记对象并需要远程保存?如果可能的话,每隔几分钟批处理一次?我用过they和Google Analytics,他们肯定在做这样的事情,但我不确定最好的方法是什么。
也许在核心数据中有一个单独的表,其中包含需要更新的EntityName和ObjectID?
发布于 2012-10-25 08:22:07
这在一定程度上取决于服务器API和它想要的信息类型。
在核心数据实体上添加修改标志或日期是一种简单的方法。只需查找标志为YES的每个对象,或者查找日期比上次同步更近的对象。但是它是有限的--您如何处理告诉服务器您删除了一个对象?您可能需要保留某种类型的外部日志--例如,包含等待发送的外发更改的plist。
我使用的一个通用方案是这样的:
为NSManagedObjectContextWillSaveNotification
insertedObjects、updatedObjects和deletedObjects的托管对象根据这些results.
在此过程中还会遇到其他几个细节--例如,如果同步失败,不要删除传出的更改列表。
https://stackoverflow.com/questions/13052647
复制相似问题