Ton*_*Liu 35 iphone core-data uitableview nspredicate nsfetchedresultscontroller
我正在一个屏幕上编写一个带有两个表的应用程序.左表是文件夹列表,右表显示文件列表.点击左侧的行时,右侧表格将显示属于该文件夹的文件.
我正在使用Core Data进行存储.当文件夹的选择发生变化时,右表NSFetchedResultsController的fetch谓词将改变并执行新的提取,然后重新加载表数据.我使用了以下代码片段:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"list = %@",self.list];
[fetchedResultsController.fetchRequest setPredicate:predicate];
NSError *error = nil;
if (![[self fetchedResultsController] performFetch:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
[table reloadData];
Run Code Online (Sandbox Code Playgroud)
但是获取结果仍然相同.我在获取之前和之后都有NSLog'ed"谓词",并且它们对于更新的信息是正确的.获取结果与初始提取保持一致(加载视图时).
我不太熟悉Core Data获取对象的方式(是否有缓存系统?),但我之前用单表视图完成了类似的事情(更改谓词,重新获取数据和刷新表),一切都进行了好.
如果有人能给我一个提示,我将非常感激.
提前致谢.
dea*_*ane 56
我几乎完全有这个问题,直到我在iphone孵化器的最近一篇博文中找到了提示
NSFetchedResultsController正在缓存第一个结果.(你可能在initWithFetchRequest中设置了一些东西:managedObjectContext:sectionNameKeyPath:cacheName)
我猜你的代码(比如我的)是CoreData示例的派生,所以假设它是@"Root",在你更改谓词之前,做一个
[NSFetchedResultsController deleteCacheWithName:@"Root"];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19024 次 |
| 最近记录: |