NSFetchedResultsController не возвращает данные - PullRequest
0 голосов
/ 26 апреля 2010

Я застрял в какой-то проблеме, и после 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;

}

Посмотрите на закомментированную строку - не было ни одной из этих строк, и когда я запросил данные - я не получил ни одной (и она была там!). Когда я раскомментировал эту строку, она начинает работать. Кажется очевидным, но все примеры, которые я видел прежде, не имели этой линии. И они работают. Как это может быть? Я просто хочу знать, что я делаю не так.

1 Ответ

3 голосов
/ 26 апреля 2010

[aFetchedResultsController performFetch:&error]; должен быть вызван в какой-то момент, чтобы получить данные. Примеры, вероятно, извлекали данные в какой-то момент, отличный от метода доступа (хотя в методе доступа это нормально).

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