有人说我们无法更改请求对象。有人说我们可以改变查询。有人说我们不能改变谓词。
如果不更改谓词,如何更改查询?
这有点奇怪。
答案 0 :(得分:3)
这不是一个SQL查询,它是获取。查询是SQL特定的概念,而fetch是可与任何类型的Core Data存储一起使用的Core Data概念。
您可以更改NSFetchedResultsController的fetchRequest
值,但它有点涉及。 From the docs:
修改获取请求
您不能简单地更改获取请求 修改结果。如果您想更改获取请求,那么您 必须:
(1)如果您正在使用缓存,请将其删除(使用deleteCacheWithName :)。
通常,如果要更改提取,则不应使用缓存 请求。
(2)更改获取请求。
(3)调用performFetch:。
缓存会导致修改获取请求时出现问题。
您还可以更改NSFetchRequest对象的谓词,但如果将该提取与获取的结果控制器一起使用,则必须执行上述步骤。
当缓存的对象与新的获取请求返回的集合不同时,会出现问题。通常,创建新的获取请求对象或新获取的结果控制器对象更简单,更简洁。
你必须使用beginUpdate
冻结tableview,而所有这一切都在进行,否则tableview的行和部分将与导致崩溃的数据不同步。