我正在iPad和Web服务器之间建立同步功能。我正在使用一种非常接近described here的方法。我只有一种类型的对象,我们称之为故事,必须同步。它是一个核心数据实体(托管对象)。
我要解决的剩下的问题是知道“每当发生更改并且需要将其同步到服务器时”。一种方法是去查找修改Story的每段代码,并让它还设置一些needsSyncing标志。这似乎并不优雅,随着时间的推移,开发人员可能会忘记为新的修改类型更新标志。
核心数据对象是否有一种观察自身的方法,因此无论何时进行任何更改,都会执行特定的方法?那将使这变得很容易。
另一种选择可能是在对托管对象上下文进行保存操作之前立即使用isUpdated方法。您要么只需要在一个位置调用保存,要么在保存的每个位置都执行此操作(听起来像第一个选项)。我想我可以创建一个在保存之前遍历所有Story对象的辅助方法,看看是否有任何对象需要设置其标志。这样做的唯一缺点是,我将遍历系统中的所有Story对象以进行任何保存,即使是与Story无关的保存也是如此。
无论如何,我将停止尝试大声猜测解决方案-有人有经验吗?
最佳答案
SDK涵盖了您。参见NSManagedObjectContext class reference,在页面的最后,MOC将发布您可以订阅的通知,包括NSManagedObjectContextObjectsDidChangeNotification。您可以收听这些内容,并与保存MOC几乎同时进行更新。