1

В чем разница между элементами get из Core Data с помощью FetchResultController или ManagedObjectContext ??Разница между get Object с использованием 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]; 

ответ

1

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

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

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

Данные, внутренние для обоих из них, будут одинаковыми. Это управление состоянием этих данных является разницей.

+0

Спасибо, человек! .... – wal

0

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

+0

Спасибо. Но массив, возвращенный этими двумя методами, одинаковый, не так ли? Вопросы касаются этого: разница в возврате. Я тестировал, спрашивая, и я думаю, что это так. – wal