作为我的同步解决方案的一部分,我对某个类的所有对象使用sync status
。只要该对象的特定(不是全部)属性发生更改,我想更新状态。属性更改时更新标志
我正在考虑四种方法:手动设置代码中的地位,无论我改变 一些需要同步
- 。这是最明显的,但也是最费力和容易出错的(我需要记得在添加新功能时添加同步状态更新)。
- 使用核心数据通知(例如
willSave
或NSManagedObjectContextObjectsDidChangeNotification
)对其进行跟踪。这似乎是乍一看最合适 - 我只需在我的AppDelegate中注册通知,并且每次更新 状态。但是有可能检查 的更改,并且只有在我关心的属性更新为 时才更新同步状态?另外,不会设置sync_status
本身也会触发这个通知,导致我陷入无限循环?我将如何解决这个问题? - 关于我关心的属性的自定义setter。我有 麻烦试图让这个工作之前,并最终决定 试图离开标准的核心数据获取/设置单独。但如果它是最合适的,我会回到这个问题。
- KVO。我之前没有使用过这种模式,但它可能是最简单的 只需注册属于我的 有关的属性更改通知并在那里设置标志。但我会在哪里做这个?我需要 来监视班级的每个对象,那么是否有可能开始在同一对象的
awakeFromInsert
中观察属性的KVO通知的 ? 也就是说,无论何时创建一个对象,立即就有相同的对象侦听属性A的更改并在其触发时设置它自己的sync_status
?
哪种方法最适合我?也许我错过了一些其他的想法?
另一种方法是通知接收方有任何变化的协议。你可以用字典来传输相关数据? – katzenhut 2013-02-18 23:16:00