objective-c - iOS 同步 - 让核心数据对象知道它必须被推送到服务器的好方法是什么?

标签 objective-c ios core-data ios5 synchronization

我正在 iPad 和网络服务器之间构建同步功能。我使用的方法非常接近 described here .我只有一种类型的对象,我们称它为故事,必须同步。它是一个核心数据实体(托管对象)。

剩下的我要解决的问题是知道“什么时候发生变化并且需要同步到服务器”。一种方法是找到修改 Story 的每一段代码,并让它也设置一些 needsSyncing 标志。这看起来并不优雅,而且随着时间的推移,开发人员可能会忘记更新新类型修改的标志。

Core Data 对象是否有一种观察自身的方法,所以无论何时进行任何更改,都会执行特定的方法?这将使这变得非常容易。

另一个选项可能是在对托管对象上下文执行保存操作之前使用 isUpdated 方法。您要么必须只在一个地方调用保存,要么在您保存的每个地方都这样做(听起来像第一个选项)。我想我可以制作一个辅助方法,在保存之前遍历所有 Story 对象,看看是否有任何对象需要设置其标志。唯一的缺点是我会遍历系统中的所有 Story 对象以进行任何保存,即使是与 Story 无关的保存也是如此。

无论如何,我会停止尝试大声猜测解决方案 - 有没有人有过这样做的好方法的经验?

最佳答案

SDK 满足您的需求。查看NSManagedObjectContext class reference ,在页面的最后,MOC 将发布您可以订阅的通知,包括 NSManagedObjectContextObjectsDidChangeNotification。您可以收听这些并在保存 MOC 的同时进行更新调用。

关于objective-c - iOS 同步 - 让核心数据对象知道它必须被推送到服务器的好方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10415289/

相关文章:

objective-c - 将 NSValue 转换为 NSData,然后以正确的类型再次转换回来

iPhone : How to use loop to generator a 256 color table in iphone?

ios - 以编程方式打开 ViewController

ios - CoreData : setAttribute has no effect 令人困惑的问题

ios - 为什么我不能更改嵌套模型中的值?

ios - Swift:如何在 map View 上启用和禁用注释?

ios - 无法关闭从闭包中调用的 UIAlertController

ios - CoreData 与子类的关系

objective-c - Cocoa - 用于调试 Xcode 和 Interface Builder 之间的绑定(bind)问题的建议技术

ios - 迁移大型 Core Data 数据库崩溃