2012-12-06 58 views
4

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

+0

将NSFetchedResultsController设置为零。 – Sandeep

+0

这对于FRC典型的懒惰实例是无效的。 – Mundi

回答

9

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

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

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

+0

是的,这是我最终做的。看起来很奇怪,没有方法可以清除结果,并且您必须执行不必要的提取来清除控制器。 – ChrisP

+0

嗯,它实际上只是两行代码,并没有完成任何真正有用的功能。您可以随时将这些代码写入您喜欢的方法名称作为FRC上的类别。 – Mundi

+0

'NSFetchedResultsController'没有'predicate'属性。我相信你的意思是'self.fetchedResultsController.fetchRequest.predicate'。 –

0

这个问题没有多大意义。 NSFetchedResultsController的数据是获取请求的结果。对于fetchedObjects为空,取回请求将不得不返回一个空集。这意味着没有满足获取请求的对象。如果有满足请求的对象,那么fetchedObjects将不会为空。你所要求的是如何确保提取没有结果。

我甚至不确定你为什么要这样做。如果你不打算使用更多的获取结果,只需摆脱NSFetchedResultsController即可。为什么要保持它,如果你不希望它的结果更多?

+0

当你有一个视图控制器使用NSFetchedResultsController的结果作为数据源并且你需要清除该数据源时,你会希望它。 –