NSFetchedResultsController观察对永久存储的所有更改吗?

我的程序的工作如下链接:

更新NSFetchedResultsController的结果而不需要新的提取

  • 将NSFetchedResultsController的结果显示给UITableView
  • 从Web服务获取新对象并将其存储到核心数据(在具有RestKit的相同视图控制器中)
  • 用NSFetchedResultsController委托的通知更新表视图
  • NSFetchedResultsControllerDelegate的实现是从Apple的Core Data项目中复制的,我的预测是:

    [NSPredicate predicateWithFormat:@"isMyTest == TRUE"]
    

    如果属性更新从TRUE变为FALSE,它将从tableview中删除行(因为该行的对象位于fetchedObjects中)

    但是,如果属性更新从FALSE变为TRUE,则NSFetchedResultsController不会通知任何内容,因此无法在表视图中看到新数据。 如果我手动更新两个 NSFetchedResulsController和UITableView的,它显示了新数据。

    我以为NSFetchedResultController监视持久存储中的所有更改,这是否太大希望? :d

    (我真的想这样做,因为其他视图控制器可以更新持久性存储,那么很难更新视图控制器。)

    如果是这样,你可以让我知道如何更好地更新NSFetchedResultsController?

    (更新)

    在参考NSfetchedResultsController时,我读了下面的单词:

    因此,控制器有效地具有三种操作模式,由它是否具有委托以及是否设置了高速缓存文件名来确定。

    没有跟踪:代表设置为零。 控制器仅提供对数据的访问,就像执行提取时一样。

    仅内存跟踪:代理非零,文件缓存名称设置为零。 控制器监视其结果集中的对象并更新部分和响应相关更改的订购信息。

    完全持久跟踪:委托和文件缓存名称不为零。 控制器监视其结果集中的对象并更新部分和响应相关更改的订购信息。 控制器维护其计算结果的持久缓存。

    “完全持续跟踪”并不意味着我想要什么? 我设置了cacheName,但它的作用相同。


    我以为NSFetchedResultController监视持久存储中的所有更改,这是否太大希望?

    FRC只会自动观察其提取返回的对象。 这通常不是问题,因为由FRC监视的对象的更改应该来自tableview UI或背景上下文。 在前者中,FRC会收到更改警报,而在后者中,合并前景和背景上下文将触发FRC更新。

    这听起来像你有代码改变的价值,但你没有通知FRC你做了任何改变。 (如果你有一个tableview显示isMyTest == TRUE所有对象,那么显然你不能从UI的isMyTest == FALSE访问对象。)在这种情况下,你需要注册tableview控制器来:

    NSManagedObjectContextObjectsDidChangeNotification
    

    ...来自上下文的通知,以便您可以告诉FRC更新其观察范围之外的更改。


    我很抱歉我的错误,我测试了新的测试项目。

    CoreData可以全面跟踪整个持久存储。

    这意味着,如果新对象适合对NSFetchedResultsController进行谓词,那么委托会通知它。

    链接地址: http://www.djcxy.com/p/36179.html

    上一篇: Does NSFetchedResultsController Observe All Changes to Persistent Store?

    下一篇: Sort NSFetchedResultsController with object in NSSet belonging to entity