我有这样的事情:
一个。 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的类型而不是对象本身。但我想确定。
答案 0 :(得分:0)
当为FRC设置委托时,FRC将从上下文接收更改通知。然后,FRC将通知其方法将更新集合(或表)视图的委托。因此,正如您已经自己发现的那样,当FRC对象“活着”时,上下文中的任何更改都将通知FRC代理。
这至少回答了你问题的一部分。要解决此问题,您需要获取对已更改的集合视图的引用,并以仅对已更改的视图执行它们的方式更改委托方法。