gpt4 book ai didi

iphone - 我如何刷新/重新加载以更新对我的谓词的更改并因此获取请求?

转载 作者:太空狗 更新时间:2023-10-30 03:42:03 25 4
gpt4 key购买 nike

您好,我目前有一个表格 View ,它正在通过核心数据进行填充。

我使用 NSPredicate 限制结果,以便只有具有相同 OrderNumber 的项目才会显示在 tableView 中。

NSPredicate *predicate = [NSPredicate predicateWithFormat:
@"orderNumber == %@", orderNumberLabel.text];
NSLog(@"predicate is: %@",predicate);
[fetchRequest setPredicate:predicate];

输入订单的表单完成后,按下按钮 [保存订单],然后订单号和订单号标签加一。

我希望发生的是 tableView 应该为空,因为新的 orderNumber 在 sql 数据库中没有条目。但是,这不会发生并调用 [myTableView reloadData];也没有解决。

但是,如果我退出项目并重新运行它,我会得到新的 orderNumber 和一个空的 tableView。因此,在运行时发生了一些事情,设置了获取请求和谓词,我需要尝试通过调用 saveOrderButtonPressed 方法进行复制。唯一的问题是我不知道该怎么做,有人可以帮忙吗?

有时,在输入订单后退出并重新运行应用程序后,我也会遇到以下错误。这与我更改 orderNumber 有关,但我认为一旦我更新 predicate/fetchRequest,它就会消失。我还需要一些指导,我需要禁用缓存吗?

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException',
reason:'FATAL ERROR: The 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:'

最佳答案

您有权使用 NSFetchedResultsController。它是完全按照您描述的用途制作的。正如错误消息所说,您可以将 NSFetchedResultsController 的缓存设置为 nil 以完全禁用缓存 - 当您的项目很少时不会对性能造成太大影响。或者您可以使用 +deleteCacheWithName: 和您分配给缓存的名称。只有这样您才能更改获取请求(例如谓词),然后您必须再次执行 performFetch:。希望您已连接委托(delegate),以便您的 TableView 自动刷新。您没有说您正在做任何会导致问题的事情(更改谓词、排序顺序等)- 您确定不是吗?

关于iphone - 我如何刷新/重新加载以更新对我的谓词的更改并因此获取请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7800857/

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