1

これがケースです。私は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]);
}
4

1 に答える 1

0

ヒントを使用できます:

 If (fetchresultcontroller != nil || isOtherEnthityUpdate)
 {
      return fetchresultcontroller;
 }

そして、他のエンティティをチェックする場所から self.tableview reload を実行します。通知センターまたは他のテーブルビューにすることができます。

于 2011-05-22T16:00:23.477 に答える