2015-04-02 37 views
0

我有這樣的事情:IOS 8 NSFetchedResultsController多視圖

A. UICollectionView1與FRC1和FRC_Search_1爲UICollectionView_Search_Results_1
B. UICollectionView1與FRC2和FRC_Search_2爲UICollectionView_Search_Results_2
C. UICollectionView1與FRC3和FRC_Search_3爲UICollectionView_Search_Results_3
D. UICollectionView1與FRC4和FRC_Search_4的UICollectionView_Search_Results_4



想法是使用NSFetchedResultsControllerDelegate更新集合視圖。但是如果我在A和B都實現它,在一次更新之後,這兩個實現都會被調用。我不明白爲什麼會發生這種情況。這是因爲兩個FRC是從同一個實體中提取還是因爲它們具有相同的上下文或其他內容?

解決此問題的最佳方法是什麼?



編輯:

@Tuslareb

我有2個UICollectionViewControllers配有獨立的類。每個都有自己的FRC,collectionView和Delegate實現。如果FRC看起來相同(相同的實體,謂詞...),那麼當我更新一個collectionViewController中的一個collectionView時,這兩個委託都會被激活。

如果這兩個collectionViews不同,就會出現問題。然後indexPaths是不同的,更新產生錯誤並停止應用程序。

這可能是它的工作方式,核心數據是觀察FRC的類型而不是對象本身。但我想確定一下。

+0

我是否正確理解你有一個集合視圖,其中包含一個視圖控制器,其中實現了NSFetchedresultscontroller委託方法?那麼,所有FRC都使用同一個代表? – Tuslareb 2015-04-03 09:35:07

回答

0

爲FRC設置委託時,FRC將從上下文接收更改通知。然後,FRC將通知其方法將更新集合(或表)視圖的委託人。因此,您已經發現自己,上下文中的任何更改都會在FRC對象處於「活動狀態」時通知FRC委託人。

這回答了您的問題的至少一部分。爲了解決這個問題,您需要獲取對已更改的集合視圖的引用,並更改委託方法,以便僅針對已更改的視圖執行這些方法。

+0

或使用不同的上下文?你的回答很有幫助,所以我會檢查它:) – elektricni 2015-04-03 18:27:54

相關問題