具有多个视图的ios 8 NSFetchedResultsController

时间:2015-04-02 20:06:40

标签: ios uicollectionview nsfetchedresultscontroller

我有这样的事情:

一个。 UICollectionView1与FRC1和FRC_Search_1用于UICollectionView_Search_Results_1
B.带有FRC2的UICollectionView1和用于UICollectionView_Search_Results_2的FRC_Search_2 C.带有FRC3的UICollectionView1和用于UICollectionView_Search_Results_3的FRC_Search_3 D.带有FRC4的UICollectionView1和用于UICollectionView_Search_Results_4的FRC_Search_4 。


想法是使用NSFetchedResultsControllerDelegate来更新集合视图。但是如果我在A和B都实现它,在一次更新之后,将调用两个实现。我不明白为什么会这样。是因为两个FRC都来自同一个实体,还是因为它们具有相同的背景或其他内容?

解决此问题的最佳方法是什么?



修改

@Tuslareb

我有2个具有单独类的UICollectionViewControllers。每个人都拥有自己的FRC,collectionView和Delegate实现。如果FRC看起来相同(相同的实体,谓词......),当我在一个collectionViewController中仅更新一个collectionView时,两个委托都被激活。

如果这两个collectionViews不同,则会出现问题。然后indexPaths是不同的,更新产生错误并停止应用程序。

这可能是它的工作方式,核心数据是观察FRC的类型而不是对象本身。但我想确定。

1 个答案:

答案 0 :(得分:0)

当为FRC设置委托时,FRC将从上下文接收更改通知。然后,FRC将通知其方法将更新集合(或表)视图的委托。因此,正如您已经自己发现的那样,当FRC对象“活着”时,上下文中的任何更改都将通知FRC代理。

这至少回答了你问题的一部分。要解决此问题,您需要获取对已更改的集合视图的引用,并以仅对已更改的视图执行它们的方式更改委托方法。