Ios 子NSManagedObjectContext保存后NSFetchedResultsController结果不一致

Ios 子NSManagedObjectContext保存后NSFetchedResultsController结果不一致,ios,objective-c,core-data,nsfetchedresultscontroller,Ios,Objective C,Core Data,Nsfetchedresultscontroller,我有一个非常奇怪的想法。。我的NSFetchedResultsController出现问题 我的设置正在使用Magic Record,我有一个子项,父项设置为MR\u defaultContext([NSManagedObjectContext MR\u contextWithParent:[NSManagedObjectContext MR\u defaultContext]]) 我使用第一个视图控制器的managedObjectContext作为父对象创建嵌套上下文,并将其用于下一个页面,这

我有一个非常奇怪的想法。。我的NSFetchedResultsController出现问题

我的设置正在使用Magic Record,我有一个子项,父项设置为
MR\u defaultContext
[NSManagedObjectContext MR\u contextWithParent:[NSManagedObjectContext MR\u defaultContext]]

我使用第一个视图控制器的
managedObjectContext
作为父对象创建嵌套上下文,并将其用于下一个页面,这是模态的。下一页将执行一个带有谓词simple的fetch,该谓词查找多对多关系中的所有实体

现在,如果在推到下一个模式页面之前不保存插入的实体,则获取是正确的。但是如果我使用
[self.managedObjectContext MR_saveonlyselfwith completion]
保存,然后按下按钮,则获取有时是正确的,有时(大多数情况下)是随机的和不正确的。例如,有
5个实体
它应该获取,但它获取1、3、4,有时没有。非常奇怪

更奇怪的是,我将实体数作为一个变量保存在模式页面中,它正确地显示了5。总是。如果我打印出to-many关系的父实体,它确实设置了所有5个关系(相反的设置也正确)

我读过关于在保存之前获取永久性身份证的文章,但这并没有什么区别


有人知道发生了什么吗?

我想您的问题可能是因为您在
先生完成saveOnlySelfWithCompletion
之前移动到下一个模式页面


试着将下一个模式从您传递的完成块推到该方法,一切都应该正常。

好的,我认为孩子/家长关系是错误的。我观看了2012年世界数据中心(WWDC)的核心数据最佳实践,并整理了发生的事情

我最初认为保存是孩子能够访问家长更改所必需的。事实证明这不是真的-子上下文访问父上下文上的更改不需要在segue之前保存。因此,删除save将不得不执行不需要的操作

另一方面,我使用
existingObjectWithID
从下一个模式页面获取对象,这是不必要的,因为父上下文的更改将可用于子上下文。我无法100%确定为什么该对象不会通过此方法获取,因为文档中说明了
。如果有一个具有给定ID的托管对象已在上下文中注册,则该对象将直接返回
,在我看来,它应该是这样的

另一个旁白是,在推到模式(在获取之前)之后从子级保存上下文效果很好


仍然不确定为什么在从父VC保存后与获取不一致。

这也是我的猜测,所以我就这么做了。不幸的是,这没有任何效果。真奇怪