【发布时间】:2015-09-16 21:36:17
【问题描述】:
我的 fetchedResultsController 最初是这样创建的(在 viewDidLoad 中):
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription
entityForName:@"Cat" inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entity];
NSSortDescriptor *sort = [[NSSortDescriptor alloc]
initWithKey:@"age" ascending:YES];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:sort]];
NSFetchedResultsController *theFetchedResultsController =
[[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest
managedObjectContext:self.managedObjectContext sectionNameKeyPath:@"age"
cacheName:@"whatever"];
self.fetchedResultsController = theFetchedResultsController;
_fetchedResultsController.delegate = self;
这很好用,结果显示在我的表格视图中。但是,当按下某些按钮时,我想过滤结果。所以我这样做:
NSPredicate *predicate = ...; //based on buttons pressed
[[self.fetchedResultsController fetchRequest] setPredicate:predicate];
[NSFetchedResultsController deleteCacheWithName:@"whatever"];
NSError * error = nil;
[self.fetchedResultsController performFetch:&error];
if (error) {
DDLogError(@"[%@ %@] fetchedResultsController ERROR: %@", THIS_FILE, THIS_METHOD, error.localizedDescription);
}
[self.myTableView reloadData];
问题是表格视图没有重新加载。如果我滚动表格视图,单元格会根据新数据发生变化,但每次尝试过滤时,节数和行数不会发生变化。
我错过了什么?
【问题讨论】:
-
您应该使用 cmets 中的错误消息将您的问题更新为其他答案。
标签: ios uitableview core-data nsfetchedresultscontroller nsfetchrequest