我正在尝试解决在这种情况下出现的问题:
我可以实现一些NSManagedObject包装器:
@interface Model : NSObject
- (id)initWithUniqueId:(id)uniqueId dataObject:(NSManagedObject *)dataObject;
@property (nonatomic, strong, readonly) id uniqueId;
@property (nonatomic, strong, readonly) NSManagedObject *dataObject;
@end
此对象可在dataObject出现故障后重新加载。但也许这种方法是错误的,不需要这种开销?只有在真正删除但未更新的情况下才应删除NSManagedObject?然后,如果对象被更新,我们可以使用KVO来处理属性更改,如果删除了对象,我们可以观察NSManagedObjectContext通知以获取更改并查找已删除的对象。
我只是想知道你喜欢哪种方式以及为什么(也许你喜欢其他方法)?提前谢谢。
答案 0 :(得分:1)
如果您使用的是外部数据源,那么您自己的某种唯一ID版本是有意义的。
然后一切都变得简单。您加载数据,在保存上下文时更新持久性存储,并通过NSNotificationCenter
发送通知。所有听众现在都可以通过重新获取来简单地更新他们的数据。
(实现委托方法的提取结果控制器甚至不必通过通知中心通知。)