2012-12-06 56 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的結果作爲數據源並且你需要清除該數據源時,你會希望它。 –