Я застрял в какой-то проблеме, и после 2 дней поиска я нашел решение, но не понял, почему оно работает.
Во-первых, я инициализировал NSFetchedResultsController, используя следующий код (похоже, что он генерируется автоматически):
- (NSFetchedResultsController *)fetchedResultsController {
if (fetchedResultsController != nil)
return fetchedResultsController;
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Profile"
inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entity];
[fetchRequest setFetchBatchSize:20];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"lastName" ascending:YES];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[fetchRequest setSortDescriptors:sortDescriptors];
NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc]
initWithFetchRequest:fetchRequest
managedObjectContext:self.managedObjectContext
sectionNameKeyPath:nil
cacheName:@"Root"];
aFetchedResultsController.delegate = self;
self.fetchedResultsController = aFetchedResultsController;
NSError *error = nil;
//[aFetchedResultsController performFetch:&error];
[aFetchedResultsController release];
[fetchRequest release];
[sortDescriptor release];
[sortDescriptors release];
return fetchedResultsController;
}
Посмотрите на закомментированную строку - не было ни одной из этих строк, и когда я запросил данные - я не получил ни одной (и она была там!). Когда я раскомментировал эту строку, она начинает работать. Кажется очевидным, но все примеры, которые я видел прежде, не имели этой линии. И они работают. Как это может быть? Я просто хочу знать, что я делаю не так.