有人关心推测NSFetchedResultsController的内部工作原理吗?
具体来说:它如何知道调用其委托方法的对象?如果我要实现NSFRC,我会这样做:1)注册来自托管上下文的所有通知,以及2)当我收到通知时,根据实体的类型检查对象的类型在NSFRC中获取请求,并检查NSFRC中的谓词(如果存在)是否为该对象返回true,如果两者都为真,则调用委托的... didChangeObject ...方法。
虽然不知何故看起来很笨,特别是那种类型检查(使用isKindOf?)。只是问,因为我需要在NSFRC方面实现类似的东西。
答案 0 :(得分:1)
托管对象上下文广播一系列通知,通知的用户信息字典包含插入,删除或更新的托管对象。
E.g。
然后,FRC只是在它自己的实体上检查返回对象的实体,如果它匹配则发送它的委托消息。NSManagedObjectContextObjectsDidChangeNotification
在属性的值时发布 托管对象中包含的对象 背景改变了。通知 发布期间 processPendingChanges,之后 已经处理了更改,但是 在安全地拨打保存之前:再次 (如果你尝试,你会产生一个 无限循环)。
通知对象是托管的 对象上下文。 userInfo 字典包含以下内容 keys:NSInsertedObjectsKey, NSUpdatedObjectsKey,和 NSDeletedObjectsKey。