我有这样的事情:
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的类型,而不是对象本身。但是我想确定。
为FRC设置委托后,FRC将从上下文中接收更改通知。然后,FRC将通知其方法将更新集合(或表)视图的委托。因此,正如您已经发现自己一样,当FRC对象为“活动”时,上下文中的任何更改都将通知FRC委托。
这至少回答了您问题的一部分。要解决此问题,您将需要获取对已更改的集合视图的引用,并以仅针对已更改的视图执行委托方法的方式更改委托方法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句