【问题标题】:How to clear NSFetchedResultsController?如何清除 NSFetchedResultsController?
【发布时间】:2012-12-06 21:21:40
【问题描述】:

如果我使用返回对象的 NSFetchedResultsController 执行提取,然后想要清除控制器,即,让 .fetchedObjects 为空数组,是否有可以调用的方法或者我是否必须执行另一个提取不返回任何结果?

【问题讨论】:

  • 将 NSFetchedResultsController 设置为 nil。
  • 这不适用于 FRC 典型的惰性实例化。

标签: objective-c core-data nsfetchedresultscontroller


【解决方案1】:

您可以将获取结果控制器的获取请求设置为不返回任何内容:

self.fetchedResultsController.fetchRequest.predicate = 
   [NSPredicate  predicateWithValue:NO];
[self.fetchedResultsController performFetch:nil]

现在self.fetchedResultsController.fetchedObjects 应该返回一个空数组。

【讨论】:

  • 是的,这就是我最终要做的。似乎很奇怪,没有清除结果的方法,而且您必须执行不必要的提取来清除控制器。
  • 嗯,实际上只有两行代码,并没有完成任何真正有用的事情。您可以随时将这些代码写入您喜欢的方法名称中,作为 FRC 上的一个类别。
  • NSFetchedResultsController 没有 predicate 属性。我相信你的意思是self.fetchedResultsController.fetchRequest.predicate
【解决方案2】:

这个问题没有多大意义。 NSFetchedResultsController 的数据是获取请求的结果。对于fetchedObjects 为空,获取请求必须返回一个空集。这意味着没有满足获取请求的对象。如果有 个对象满足请求,则 fetchedObjects 不会为空。您的要求相当于询问如何确保提取没有结果。

我什至不确定你为什么想要这个。如果您不再使用获取的结果,只需删除NSFetchedResultsController。如果您不再想要它的结果,为什么还要保留它?

【讨论】:

  • 如果您有一个使用 NSFetchedResultsController 的结果作为数据源的视图控制器并且您需要清除该数据源,您可能会需要它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-11
  • 2011-12-24
  • 2011-01-16
  • 2010-11-07
  • 2011-08-16
相关资源
最近更新 更多