gpt4 book ai didi

iphone - NSFetchedResultsController:更改谓词不起作用?

转载 作者:行者123 更新时间:2023-12-03 18:14:13 27 4
gpt4 key购买 nike

我正在编写一个应用程序,一个屏幕上有两个表格。左表是文件夹列表,右表显示文件列表。当点击左侧的一行时,右侧表格将显示属于该文件夹的文件。

我正在使用 Core Data 进行存储。当文件夹的选择发生变化时,右表的 NSFetchedResultsController 的 fetch 谓词将发生变化并执行新的 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];

但是获取结果仍然相同。我在获取之前和之后都对“谓词”进行了 NSLog 处理,并且更新的信息是正确的。获取结果与初始获取相同(加载 View 时)。

我不太熟悉Core Data获取对象的方式(有缓存系统吗?),但我之前用单 TableView 做过类似的事情(更改谓词,重新获取数据和刷新表)一切都很顺利。

如果有人能给我提示,我将不胜感激。

提前致谢。

最佳答案

我几乎遇到了这个问题,直到我在最近的一篇博客文章 iphone incubator 中找到了提示。

NSFetchedResultsController 正在缓存第一个结果。 (您可能在 initWithFetchRequest:managementObjectContext:sectionNameKeyPath:cacheName 处设置了一些内容)

我猜测您的代码(就像我的代码一样)是 CoreData 示例的派生,因此假设它是 @"Root",在更改谓词之前,请执行以下操作

[NSFetchedResultsController deleteCacheWithName:@"Root"];  

关于iphone - NSFetchedResultsController:更改谓词不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2482100/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com