Objective c 从NSFetchedResultsController检测sectionNameKeyPath上的更新
情况就是这样。我有两种型号:Objective c 从NSFetchedResultsController检测sectionNameKeyPath上的更新,objective-c,ios,core-data,updates,Objective C,Ios,Core Data,Updates,情况就是这样。我有两种型号: Sport(具有属性名称和玩家关系) 玩家(具有属性名称和关系) 在ViewController中,我不想在按运动排序的UITableView中显示所有玩家。 当播放器名称更改时,将调用NSFetchedResultsControllerDelegate回调 但是当更新运动的名称时,不会调用NSFetchedResultsControllerDelegate回调 这是正常的行为吗?如何知道Sport.name的更新(无需创建另一个NSFetchedResults
- Sport(具有属性名称和玩家关系)
- 玩家(具有属性名称和关系)
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"sport.name != NULL"];
[fetchRequest setPredicate:predicate];
NSArray *sortDescriptors = [NSArray arrayWithObjects:
[NSSortDescriptor sortDescriptorWithKey:@"sport.name" ascending:YES],
[NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES],
nil];
[fetchRequest setSortDescriptors:sortDescriptors];
NSEntityDescription *entityDescription = [NSEntityDescription entityForName:@"Player"
inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entityDescription];
fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
managedObjectContext:self.managedObjectContext
sectionNameKeyPath:@"sport.name"
cacheName:nil];
[fetchRequest release];
fetchedResultsController.delegate = self;
NSError *error = nil;
if ([fetchedResultsController performFetch:&error] == NO) {
ALog(@"Fetch error: %@", [error localizedDescription]);
}
您可以使用提示:
If (fetchresultcontroller != nil || isOtherEnthityUpdate)
{
return fetchresultcontroller;
}
并从您检查其他实体的任何位置重新加载self.tableview。它可以是通知中心或其他tableview