NSFetchedResultsController调用时候crash
2016-12-06 10:34
155 查看
crash信息如下:
persistent cache of section information does not match the current configuration. You have illegally mutated the NSFetchedResultsController's fetch request, its predicate, or its sort descriptor without either disabling caching or using +deleteCacheWithName:
2016-12-06 10:29:25.906 CoredataSample[1781:67800] CoreData: error: fetch request = <NSFetchRequest: 0x7b156fc0> (entity: Employee; predicate: ((null));
原因:说得很清楚了,在调用的时候没有清除之前的cache信息所导致的。
解决方式:
1. 不进行缓存
_fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:@"number" cacheName:@"Root"];
修改为
_fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:@"number" cacheName:nil];
2. 可以进行缓存,但是在缓存新的之前先把旧有的删除掉
[NSFetchedResultsController deleteCacheWithName:@"Root"];
_fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:@"number" cacheName:@"Root"];
persistent cache of section information does not match the current configuration. You have illegally mutated the NSFetchedResultsController's fetch request, its predicate, or its sort descriptor without either disabling caching or using +deleteCacheWithName:
2016-12-06 10:29:25.906 CoredataSample[1781:67800] CoreData: error: fetch request = <NSFetchRequest: 0x7b156fc0> (entity: Employee; predicate: ((null));
原因:说得很清楚了,在调用的时候没有清除之前的cache信息所导致的。
解决方式:
1. 不进行缓存
_fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:@"number" cacheName:@"Root"];
修改为
_fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:@"number" cacheName:nil];
2. 可以进行缓存,但是在缓存新的之前先把旧有的删除掉
[NSFetchedResultsController deleteCacheWithName:@"Root"];
_fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:@"number" cacheName:@"Root"];
相关文章推荐
- iOS Swift教程 Core Data (五)NSFetchedResultsController 下
- 核心数据库CoreData之NSFetchedResultsController
- Android使用系统调用相册的时候打开了云相册出现CRASH或者找不到截图程序的解决方案
- Core Data浅谈系列之七 : 使用NSFetchedResultsController
- NSFetchedResultsController
- 类 NSFetchedResultsController详解
- ios coredata sqlite3 NSFetchedResultsController(2)
- [ios开发基础之 Core Data[3]]如何使用NSFetchedResultsController 来集成TableView操作
- 如何使用NSFetchedResultsController
- NSFetchedResultsController的使用
- NSFetchedResultsController、CoreData、UITableView
- Implementing NSFetchedResultsController for UICollectionView
- Core Data浅谈系列之七 : 使用NSFetchedResultsController
- iOS教程:如何使用NSFetchedResultsController
- CoreData用法二:NSFetchedResultsController实例操作与讲解
- NSFetchedResultsController的使用
- 8.0.x 系统上调用 UIActivityViewController 必现 crash
- ios NSFetchedResultsController的使用
- iOS:CoreData数据库的使用四(数据库和UITableViewController以及NSFetchedResultsController一起使用)
- Core Data浅谈系列之七 : 使用NSFetchedResultsController