Обнаружение обновлений sectionNameKeyPath из NSFetchedResultsController - PullRequest
1 голос
/ 16 марта 2011

Вот случай. У меня есть 2 модели:

  • Спорт (с именем атрибута и родством игроков)
  • Игрок (с именем атрибута и отношениемShip sport)

В ViewController я не хочу отображать всех игроков в UITableView, упорядоченном по видам спорта. Когда имя игрока изменяется, вызываются обратные вызовы NSFetchedResultsControllerDelegate.

Но когда имя Sport обновляется, никакие обратные вызовы NSFetchedResultsControllerDelegate не вызываются.

Это нормальное поведение? Как я могу узнать обновления Sport.name (без создания другого NSFetchedResultsController)?

Спасибо и наилучшими пожеланиями.

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]);
}

1 Ответ

0 голосов
/ 22 мая 2011

Вы можете использовать подсказку:

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

И выполнить перезагрузку self.tableview из любого места, где вы проверяете другую сущность.Это может быть центр уведомлений или другой вид таблицы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...