Ios NSFetchedResultsController的作用域
如果正在观察的实体的属性发生更改,Ios NSFetchedResultsController的作用域,ios,core-data,Ios,Core Data,如果正在观察的实体的属性发生更改,NSFetchedResultsController是否可以工作 例如,我为一个名为conversation的类配置了一个NSFetchedResultsController。现在,此对话可以包含一系列消息。已读取/未读取或删除此属性消息上允许的操作 因此,在某个阶段,如果我删除一条消息或将其中一条标记为已读或更新消息,则对话结构的状态是否会变脏,并且我的原始获取结果控制器是否会返回更新的对话值以及修改后的消息?,如果您有一个消息数组,是的。但是,如果消息是一种
NSFetchedResultsController
是否可以工作
例如,我为一个名为conversation
的类配置了一个NSFetchedResultsController
。现在,此对话
可以包含一系列消息
。已读取/未读取或删除此属性消息上允许的操作
因此,在某个阶段,如果我删除一条消息或将其中一条标记为已读或更新消息,则对话
结构的状态是否会变脏,并且我的原始获取结果控制器是否会返回更新的对话
值以及修改后的消息
?,如果您有一个消息数组
,是的。但是,如果消息
是一种关系,则某些更改将导致更新(添加或删除),而有些则不会(读取或未读取)。这是因为FRC正在跟踪对话
中的更改,而不是消息
实体中的更改
区别在于,如果消息
不是一个实体,并且您使用的是一个数组,那么消息
实际上是一个二进制数据块,任何更改都完全在对话
上,正如前面所指出的,fetched results controller不会对不同于其主fetch请求的实体的关系实体属性的更改做出反应
一种解决方案是让消息实体在属性更改时通过通知中心发出自己的NSNotification
,并让包含获取的结果控制器的视图控制器收听它。感谢您的反馈。我的实际数据结构是这样的。Conversation是一个类,消息是一个SensorDeredSet(我认为这种行为在Coredata中类似,只是数组和集合之间有明显的区别)。我的问题是,当我的消息被更新时,FRC跟踪对话没有捕捉到这一点。而当通过添加消息更新我的对话时,FRC跟踪消息也会更新。那么,您是否建议,问题出在其他地方?我的意思是,您认为我的FRC配置方式正确吗?只需添加消息是一个单独的实体,它与对话
有关系,所以实际上没有数组,而是有关系。我的回答仍然描述了这种情况。您需要单独跟踪消息更改,可能需要另一个FRC…我想我仍然不清楚…让我重新表述它…FRC(对话)<代码>对话
有一组有序的消息
。信息有一个单独的FRC。当我添加消息时,FRC对对话
和消息
/都会起作用,但当我更新消息
时,FRC对对话不起作用。这正是因为你所概述的原因而期望的行为。非常感谢Wain。我会把你的答案标记为已回答。此外,正如事后所想,如果我更新消息时,我将更新的消息添加回对话中,这不应该调用对话中的FRC吗?我想我仍然不清楚…让我重新表述它…FRC(对话)<代码>对话
有一组有序的消息
。信息有一个单独的FRC。当我添加消息时,FRC对对话
和消息
/都会起作用,但当我更新消息
时,FRC对对话不起作用。这正是因为你所概述的原因而期望的行为吗?这正是因为你所概述的原因而期望的行为吗。