我们可以在NSFetchedRequestController中更改Query吗?

时间:2011-09-18 11:41:15

标签: objective-c core-data xcode4

有人说我们无法更改请求对象。有人说我们可以改变查询。有人说我们不能改变谓词。

如果不更改谓词,如何更改查询?

这有点奇怪。

1 个答案:

答案 0 :(得分:3)

这不是一个SQL查询,它是获取。查询是SQL特定的概念,而fetch是可与任何类型的Core Data存储一起使用的Core Data概念。

您可以更改NSFetchedResultsController的fetchRequest值,但它有点涉及。 From the docs:

  

修改获取请求

     

您不能简单地更改获取请求   修改结果。如果您想更改获取请求,那么您   必须:

     

(1)如果您正在使用缓存,请将其删除(使用deleteCacheWithName :)。

     

通常,如果要更改提取,则不应使用缓存   请求。

     

(2)更改获取请求。

     

(3)调用performFetch:。

缓存会导致修改获取请求时出现问题。

您还可以更改NSFetchRequest对象的谓词,但如果将该提取与获取的结果控制器一起使用,则必须执行上述步骤。

当缓存的对象与新的获取请求返回的集合不同时,会出现问题。通常,创建新的获取请求对象或新获取的结果控制器对象更简单,更简洁。

你必须使用beginUpdate冻结tableview,而所有这一切都在进行,否则tableview的行和部分将与导致崩溃的数据不同步。