检测特定核心数据表中的更改

时间:2011-07-11 08:57:22

标签: iphone ios core-data delegates controller

我正在使用NSFetchedResultsControllerDelegate来检测打印“Events”的表视图中的更改。但是那些“事件”与“协会”相关联,包括“isFollowed”号码(如果是Assiciation.isFollow == 1,那么我们打印事件,否则我们不会)。我们可以更改这些isFollow BOOL,但NSFetchedResultsControllerDelegate检测“事件”中的更改,而不是“关联”。所以我正在使用这段代码

- (void) viewWillAppear:(BOOL)animated{
    //[self setMyFetchedResultsController:nil];
    NSError *error = nil;
    [myFetchedResultsController performFetch:&error];
    [[self myTableView] reloadData];
}

每次重新加载表。问题是它效率不高,因为它每次都会更新控制器,而不仅仅是它何时有用。所以我想知道是否有一个解决方案来检测核心数据中特定表格中特定行的更改,或者您是否想要更好的方法。

谢谢,Niels

1 个答案:

答案 0 :(得分:0)

您可以监控保存通知(请参阅NSManagedObjectDidSaveNotification文档)并抓取其结果以检查是否有任何关联已更改。这种方法本质上是低效的。

更好的方法可能是从视图控制器修改关联的委托回调,然后强制更新表格单元格/获取结果控制器。

我认为在这种情况下,只需更新表示具有跟随或取消跟随关联的事件的单个表格单元格即可。在批量更新的情况下,最好只重新加载整个表。