UICollectionView Diffable 数据源与 NotificationCenter 和 TabBarController
UICollectionView Diffable Data Source with NotificationCenter and TabBarController
我有 2 个 UICollectionView 控制器(Storefront,客户可以在其中查看所有产品,Backend,我可以在其中 CRUD 项目)嵌入到 TabBarViewController 中。两个视图控制器都有单独的数据源(最初它们包括相同的项目,在我的例子中是具有“名称”和“价格”属性的对象)填充它们。
想法很简单:比方说,我单击后端 VC 中的一个单元格,详细信息 VC 以模态方式呈现,我编辑对象的一些属性并确认更改。我想要的是对象的更改对后端 VC 和店面 VC.
都可见
我想到的第一件事是实施 NotificationCenter 以将 Detail VC 的更改广播到后端和店面,但事情是这样的:当我在后端 [=36= 收到项目时一切正常] 并调用 snapshot.reloadItems,因为该项目属于后端 VC 数据源,但是当 Storefront VC 收到相同的项目时,我收到以下错误:由于未捕获的异常 'NSInternalInconsistencyException',正在终止应用程序,原因:'Invalid parameter not satisfying: indexPath || ignoreInvalidItems'.
我知道可区分数据源是基于项目是否相同的想法,所以当我将一个项目从后端的数据源传递到店面的数据源时,店面的数据源不知道如何实现snapshot.reloadItems 因为它首先没有具有适当 id 的项目。
关于如何使用可区分数据源和 NotificationCenter 实现上述内容有什么想法吗?或者其他方法?
我考虑过让 Storefront 和 Backend 共享数据源,但不确定这样做是否合理,是否会在未来带来麻烦。
我找到的唯一解决方案是将我的模型从 Struct 更改为 Class。这样一切都很好。
我有 2 个 UICollectionView 控制器(Storefront,客户可以在其中查看所有产品,Backend,我可以在其中 CRUD 项目)嵌入到 TabBarViewController 中。两个视图控制器都有单独的数据源(最初它们包括相同的项目,在我的例子中是具有“名称”和“价格”属性的对象)填充它们。
想法很简单:比方说,我单击后端 VC 中的一个单元格,详细信息 VC 以模态方式呈现,我编辑对象的一些属性并确认更改。我想要的是对象的更改对后端 VC 和店面 VC.
都可见我想到的第一件事是实施 NotificationCenter 以将 Detail VC 的更改广播到后端和店面,但事情是这样的:当我在后端 [=36= 收到项目时一切正常] 并调用 snapshot.reloadItems,因为该项目属于后端 VC 数据源,但是当 Storefront VC 收到相同的项目时,我收到以下错误:由于未捕获的异常 'NSInternalInconsistencyException',正在终止应用程序,原因:'Invalid parameter not satisfying: indexPath || ignoreInvalidItems'.
我知道可区分数据源是基于项目是否相同的想法,所以当我将一个项目从后端的数据源传递到店面的数据源时,店面的数据源不知道如何实现snapshot.reloadItems 因为它首先没有具有适当 id 的项目。
关于如何使用可区分数据源和 NotificationCenter 实现上述内容有什么想法吗?或者其他方法?
我考虑过让 Storefront 和 Backend 共享数据源,但不确定这样做是否合理,是否会在未来带来麻烦。
我找到的唯一解决方案是将我的模型从 Struct 更改为 Class。这样一切都很好。