Разница между get Object с использованием FetchResultController и ManagedObjectContext - PullRequest
1 голос
/ 31 марта 2010

В чем разница между получением элементов из Core Data с помощью FetchResultController или ManagedObjectContext ??

1) FetchResultController

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
[fetchRequest setEntity:[NSEntityDescription entityForName:@"Item" inManagedObjectContext: managedObjectContext]]; 

NSSortDescriptor *sortDescriptorNameAscending = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptorNameAscending,nil];
[fetchRequest setSortDescriptors:sortDescriptors];
[sortDescriptorNameAscending release];

NSFetchedResultsController *frc = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:managedObjectContext sectionNameKeyPath:nil cacheName:@"Lists"]; 

2) ManagedObjectContext

NSFetchRequest *request = [[NSFetchRequest alloc] init]; 
[request setEntity:[NSEntityDescription entityForName:@"Item"  inManagedObjectContext:managedObjectContext]]; 
NSError *error = nil; 
NSArray *items = [ managedObjectContext executeFetchRequest:request error:&error]; 

Ответы [ 2 ]

1 голос
/ 31 марта 2010

Смысл использования NSFetchedResultsController в отличие от NSFetchRequest - это мониторинг ваших данных и удобные методы при работе с разделами.

При работе с NSFetchRequest у вас естьчтобы определить разделы самостоятельно, и вам нужно повторно получать данные, когда что-то меняется.

При работе с NSFetchedResultsController он будет определять ваши разделы, кэшировать результаты (делая второй запрос для этих данных почти мгновенным)и предоставьте удобные методы для вашего NSTableView.Наконец, когда ваши данные изменятся, NSFetchedResultsController уведомит вас через своих делегатов.

Внутренние данные обоих будут одинаковыми.Разница заключается в управлении состоянием этих данных.

0 голосов
/ 31 марта 2010

Объект NSFetchedResultsController сообщит вам, когда изменятся объекты вашего запроса. Просто предоставьте объект делегата для приема вызовов (см. Документацию по протоколу NSFetchedResultsControllerDelegate). Он также предоставляет вам управление разделами, которое полезно, если вы хотите отобразить данные в виде таблицы.

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