NSFetchedResultsController:它如何知道调用其委托的对象?

时间:2011-07-02 19:24:12

标签: core-data

有人关心推测NSFetchedResultsController的内部工作原理吗?

具体来说:它如何知道调用其委托方法的对象?如果我要实现NSFRC,我会这样做:1)注册来自托管上下文的所有通知,以及2)当我收到通知时,根据实体的类型检查对象的类型在NSFRC中获取请求,并检查NSFRC中的谓词(如果存在)是否为该对象返回true,如果两者都为真,则调用委托的... didChangeObject ...方法。

虽然不知何故看起来很笨,特别是那种类型检查(使用isKindOf?)。只是问,因为我需要在NSFRC方面实现类似的东西。

1 个答案:

答案 0 :(得分:1)

托管对象上下文广播一系列通知,通知的用户信息字典包含插入,删除或更新的托管对象。

E.g。

  

NSManagedObjectContextObjectsDidChangeNotification

     

在属性的值时发布   托管对象中包含的对象   背景改变了。通知   发布期间   processPendingChanges,之后   已经处理了更改,但是   在安全地拨打保存之前:再次   (如果你尝试,你会产生一个   无限循环)。

     

通知对象是托管的   对象上下文。 userInfo   字典包含以下内容   keys:NSInsertedObjectsKey,   NSUpdatedObjectsKey,和   NSDeletedObjectsKey。

然后,FRC只是在它自己的实体上检查返回对象的实体,如果它匹配则发送它的委托消息。