0
你好,這裏是我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]);
}
}
沒有錯誤,什麼都沒有。如果我在Documents目錄中看到我的.sqlite文件,那麼它已被修改,但我無法獲取任何獲取的對象。真的很奇怪,我使用基本上相同的代碼爲我的其他應用程序,它工作得很好。
任何想法?
你是否在某處調用了'performFetch'? - 如果'sectionNameKeyPath = nil',我也不會指定'cacheName'。 – 2013-02-09 19:51:27
完全忘了performFetch。它似乎沒有編程一段時間有它的影響。但是,在這裏學到了很好的經驗,謝謝!只有一個問題 - 爲什麼不在sectionNameKeyPath爲零時指定緩存? – Devfly 2013-02-09 19:58:56
我會將其放入我的答案中... – 2013-02-09 19:59:51