NSFetchedResultsController委托回调关系

时间:2013-12-11 15:08:51

标签: ios core-data delegates relationship nsfetchedresultscontroller

假设您有两个实体,一个是People,另一个是LocationLocation有一个属性namePeople与名为Location的{​​{1}}有一对一的关系。

如果您有location,如果您更改了NSFetchedResultsController s Location,则无法获得代理回调。

name

我知道我可以获取NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; NSEntityDescription *entity = [NSEntityDescription entityForName:@"People" inManagedObjectContext:self.managedObjectContext]; [fetchRequest setEntity:entity]; // Edit the sort key as appropriate. NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"location.name" ascending:NO]; NSArray *sortDescriptors = @[sortDescriptor]; [fetchRequest setSortDescriptors:sortDescriptors]; NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:@"location.name" cacheName:@"Master"]; aFetchedResultsController.delegate = self; self.fetchedResultsController = aFetchedResultsController; 实体,然后按Location过滤它来解决此问题。但我对此感到好奇,name代表是否只是在实体关系中发生变化时通知您,而不是关系的属性。

任何人都可以给我一些关于此功能的帖子。我搜索网络和Apple的文档,但找不到合理的描述。

1 个答案:

答案 0 :(得分:2)

  

NSFetchedResultsController委托只是在实体关系中发生变化时通知您,而不是关系的属性。

完全。因为关系的变化是FRC正在观察的对象的变化。但是,关系另一端的其中一个对象的属性更改将不会通知给委托,因为FRC没有观察到这些对象。