Здравствуйте вот моя реализация NSFetchedResultsController:Основные данные не выборки объектов
-(NSFetchedResultsController *)fetchedResultsController
{
if (_fetchedResultsController != nil) {
return _fetchedResultsController;
}
NSLog(@"context - %@",self.context);
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription
entityForName:@"Categories" inManagedObjectContext:self.context];
[fetchRequest setEntity:entity];
NSSortDescriptor *sort = [[NSSortDescriptor alloc]
initWithKey:@"name" ascending:YES];
[fetchRequest setSortDescriptors:@[sort]];
[fetchRequest setFetchBatchSize:20];
NSFetchedResultsController *theFetchedResultsController =
[[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
managedObjectContext:self.context sectionNameKeyPath:nil
cacheName:@"root"];
_fetchedResultsController = theFetchedResultsController;
_fetchedResultsController.delegate = self;
// [[self context] fetchObjectsForEntityName:@"Categories" withPredicate:
// nil] ;
return _fetchedResultsController;
}
fetchedResultsController.fetchedObjects всегда равна нулю. Вот как я добавляю объекты:
-(void)addCategoryWithName:(NSString *)name
{
NSLog(@"context - %@",self.context);
Categories *category = (Categories *)[NSEntityDescription insertNewObjectForEntityForName:@"Categories" inManagedObjectContext:self.context];
category.name = name;
NSLog(@"category name - %@",category.name);
category.displayOrder = [NSNumber numberWithFloat:1.0f];
// site.displayOrder = displayOrder;
NSError __block *error;
if (![self.context save:&error]){
NSLog(@"Error saving - %@", [error localizedDescription]);
}
}
Там нет ошибки, нет ничего. Если я вижу файл .sqlite в папке «Документы», он изменяется, но я не могу получить какие-либо объекты. Действительно странно, я использую принципиально одни и те же коды для моего другого приложения, и все работает отлично.
Любые идеи?
Вы называете 'performFetch' где-то? - Также я бы не указал 'cacheName', если' sectionNameKeyPath = nil'. –
Полностью забыл о performFetch. Кажется, что не какое-то программирование какое-то время имеет свои эффекты. Однако хороший опыт узнал здесь, спасибо! Только один вопрос - почему бы не указать кеш, когда sectionNameKeyPath равен нулю? – Devfly
Вложу это в свой ответ ... –