Wes*_*ton 2 cocoa core-data nsfetchedresultscontroller nsmanagedobjectcontext ios
我找不到任何关于此的澄清,所以它可能是一个错误.
问题是,我有一系列父子管理对象上下文.
当我保存子上下文时,更改会被推送到父级,我可以使用普通的旧NSFetchRequest来获取.
但是,如果我依赖NSFetchedResultsController将这些更改拉到第一个兄弟的上下文中,他们就看不到它们了.
呼叫-(void)performFetch: error;
似乎也没有拉动变化.
重新启动应用程序后,所有新数据都可用.
我的假设是NSFetchedResultsController仅从其当前上下文中获取并且不会跟随链到持久性存储.
有人可以请我直接在这里吗?
我是否必须使用通知来监控其他上下文的更改?
最后,这是在doc的某处提到的吗?我找不到它的生命.
保存子上下文时,更改将传播到父级,但在保存根上下文(即没有父级)之前,它们不会提交到持久性存储.父上下文中的更改不会推送到其他子项(兄弟).
我处理这个的方式是我配置了我的根上下文,NSMainQueueConcurrencyType
并使用根上下文来获取我的获取结果控制器.如果您希望为FRC使用子上下文,则在父项保存之后,重置子上下文并再次执行获取.
Apple Docs
文件的相关段落是:
在上下文中保存更改时,更改仅提交"一个存储".如果保存子上下文,则更改将推送到其父项.在保存根上下文之前,这些更改不会保存到持久性存储中.(根管理对象上下文是父级为nil的上下文.)此外,父级在保存之前不会从子级中提取更改.如果要最终提交更改,则必须保存子上下文.
完整文档位于OS X v10.7和iOS 5.0的Core Data发行说明中
归档时间: |
|
查看次数: |
991 次 |
最近记录: |