2011-03-16 44 views
1

這是實例。我有2種型號:從NSFetchedResultsController檢測sectionNameKeyPath上的更新

  • 體育(與屬性名稱和關係玩家)
  • 播放器(帶屬性名稱和關係運動)

在一個視圖控制器,我wan't顯示所有玩家在由體育命令的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]); 
} 

回答

0

可以使用一個技巧:

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

而且從其中u檢查其他實體的任何地方做self.tableview重裝。它可以是通知中心或其他桌面視圖。

相關問題