我有两个UICollectionView控制器(一个店面,客户可以看到所有产品,还有后端,在这里我可以CRUD项目)嵌入到TabBarViewController中。两个视图控制器都有不同的数据源(最初它们包含相同的项,在我的例子中是带有"name“和"price”属性的对象)。
这个想法很简单:比方说,我点击后端VC中的一个单元,详细介绍VC,然后编辑对象的一些属性并确认更改。我想要的是,对对象的更改是可见的,无论是后端VC还是商店VC。
我想到的第一件事是实现NotificationCenter来广播从详细VC到后端和店面的更改,但事情是这样的:当我在后端VC中接收到项目并调用NotificationCenter时,一切正常,因为该项目属于后端VC数据源,但是当商店前端VC接收到相同的项目时,我得到以下错误:由于未登录的异常“NSInternalInconsistencyException”,终止应用程序,原因是:“无效参数不令人满意: indexPath indexPath
我了解到,不同的数据源是基于这样的思想,即项目是否相同--所以当我从后端数据源传递项目到商店数据源时,商店的数据源不知道如何实现snapshot.reloadItems,因为它一开始就没有具有适当id的项。
如何使用不同的数据源和NotificationCenter实现上述功能?或者其他方法?
我曾想过要为店面和后端提供共享数据源,但不确定这样做是否合理,将来是否会带来麻烦。
发布于 2020-09-06 14:29:48
我找到的唯一解决方案是将我的模型从Struct改为Class。这样一切都很好。
https://stackoverflow.com/questions/63550302
复制相似问题