NSFetchedResultsController跨关系更改跟踪

时间:2011-02-09 21:17:48

标签: core-data nsfetchedresultscontroller relationship

我有一个模型,其中两个实体通过一对一关系链接。我想在TableView中显示所有EntityA对象,其中entityB.myIntAttribute等于给定值。这在我使用谓词@“entityB.myIntAttribute == aValue”为EntityA创建FetchRequest时有效。

我的问题在于更改跟踪。我在与前一个FetchRequest关联的NSFetchedResultsController上设置了NSFetchedResultsControllerDelegate委托。此委托有效,因为如果我设置了与其中一个结果的谓词不匹配的新entityB,则会收到删除通知。但是,如果我直接更改entityB对象上myIntAttribute的值以使谓词结果发生更改,则不会通知我的委托更改。

NSFetchedResultsController是否使用跨越关系的谓词更改跟踪工作?在修改关系属性后,FetchedResultController如何重新计算谓词?

1 个答案:

答案 0 :(得分:-1)

您是否在委托中实施了以下所有方法:

- (void)controller:(NSFetchedResultsController *)controller didChangeSection:(id <NSFetchedResultsSectionInfo>)sectionInfo atIndex:(NSUInteger)sectionIndex forChangeType:(NSFetchedResultsChangeType)type

- (void)controller:(NSFetchedResultsController *)controller didChangeObject:(id)anObject atIndexPath:(NSIndexPath *)indexPath forChangeType:(NSFetchedResultsChangeType)type newIndexPath:(NSIndexPath *)newIndexPath

- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller

- (void)controllerWillChangeContent:(NSFetchedResultsController *)controller