これがケースです。私は2つのモデルを持っています:
- スポーツ (属性名と関係のある選手)
- Player (属性名と関係スポーツ)
ViewController では、スポーツごとに並べられた UITableView にすべてのプレーヤーを表示したくありません。プレイヤー名が変更されると、NSFetchedResultsControllerDelegate コールバックが呼び出されます。
ただし、Sport の名前が更新されると、NSFetchedResultsControllerDelegate コールバックは呼び出されません。
これは正常な動作ですか? (別の NSFetchedResultsController を作成せずに) Sport.name の更新を知るにはどうすればよいですか?
よろしくお願いいたします。
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]);
}