Как правильно настроить NSFetchedResultsController

Я помещаю NSFetchedResultsController в мой код, так что я получаю это хорошее автоматическое разделение данных моего табличного представления.

Поэтому я провожу тест, чтобы убедиться, что все работает правильно. У меня есть единственная сущность Book в моем постоянном магазине. Сначала я выполню выборку по-старому, затем попытаюсь использовать NSFetchedResultsController. Разница между двумя блоками кода составляет всего 2 строки.

Кодбез NSFetchedResultsController:

 NSFetchRequest *request = [[NSFetchRequest alloc] init];
 NSEntityDescription *entity = [NSEntityDescription entityForName:kBookEntityName inManagedObjectContext:self.managedObjectContext];
 [request setEntity:entity];

 NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"title" ascending:NO];
 NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
 [request setSortDescriptors:sortDescriptors];
 [sortDescriptor release];
 [sortDescriptors release];

  //The following 2 lines will be replaced by the NSFetchedResultsController
 NSMutableArray *mutableFetchResults = [[[self.managedObjectContext executeFetchRequest:request error:nil] mutableCopy] autorelease];
 Book *result = (Book*)[mutableFetchResults objectAtIndex:0];

 NSString* title = [result valueForKey:@"title"];
 NSString* priority = [result valueForKeyPath:@"priority.name"];


 [request release];

Теперь я заменяю в строках NSFetchedResultsController:

NSFetchedResultsController* fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request managedObjectContext:self.managedObjectContext sectionNameKeyPath:@"title" cacheName:@"BookList"];                                                                                                                                                                                                                                                                                                           

Book *result = (Book*)[fetchedResultsController objectAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]];

Кажется довольно сухим. Первый блок кода правильно выбирает единый объект Book. Однако код с NSFetchedResultsController этого не делает. Вместо этого он возвращает ноль.

Мой вопрос: правильно ли я настраиваю NSFetchedResultsController в этом примере?

(обратите внимание, что свойство fetchedObjects объекта NSFetchedResultsController также равно nil)

Ответы на вопрос(2)

Ваш ответ на вопрос