在表/集合视图控制器及其关联的 diffable 数据源子类之间共享数据模型的好方法是啥?

Posted

技术标签:

【中文标题】在表/集合视图控制器及其关联的 diffable 数据源子类之间共享数据模型的好方法是啥?【英文标题】:What is a good approach to sharing a data model between a table/collection view controller and its associated diffable data source subclass?在表/集合视图控制器及其关联的 diffable 数据源子类之间共享数据模型的好方法是什么? 【发布时间】:2020-10-07 09:58:14 【问题描述】:

我有一个UITableViewController,其中声明了一个模型属性。在表格视图控制器之外从UITableViewDataSource 协议一致性迁移到UITableViewDiffableDataSource 的子类时,模型不再可以在数据源中访问。

在两者之间共享数据模型的推荐方法是什么,比如在 diffable 数据源中的单元格删除委托回调可以反映模型属性和 CloudKit 数据库的变化。

【问题讨论】:

使用单例数据库管理器,您的模型对象始终处于活动状态。 【参考方案1】:

我相信这完全取决于您选择的架构。 但一般假设您有 ViewModel(在 MVVM 中)或 Presenter(在 MVP/VIPER 中),您应该将模型保留在那里,然后将其绑定到 DataSource。

当删除委托被命中时,你需要在你的VM/Presenter上调用一个delete func,它会更新这个模型,将它保存到CloudKit,然后触发DataSource更新

如果您想获得更面向代码的答案,请分享您的代码示例,我很乐意为您提供帮助。

【讨论】:

以上是关于在表/集合视图控制器及其关联的 diffable 数据源子类之间共享数据模型的好方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

diffable 数据源节标题在更新期间闪烁

iOS 13 上 TableView 错误的 Diffable 数据源:移动的关联不一致

在表视图内的集合视图中传递多维数组

在表视图/集合视图中采用拖放在 iPhone 上不起作用

无法在表视图和另一个视图控制器之间传递数据

如何重新加载 UIPageViewController 以在 Swift 中重新加载其视图