首页 > 解决方案 > 如何使用 Combine 将 NSManagedObject 绑定到表/集合视图单元格?

问题描述

我有NSFetchedResultsController一个动态表格视图。我的表格视图单元格有一个文本标签。我应该如何将对象从获取的结果控制器绑定到单元格?

WWDC 2019 230中,有一个代码片段,其中核心数据对象绑定到视图...

if let tag = try? fetchRequest.execute().first {
  nameSubscription = tag.publisher(for: \.name).assign(to: \.text, on: tagLabel)
  colorSubscription = tag.publisher(for: \.color).map({ $0 as? UIColor}).assign(to: \.textColor, on: tagLabel)
}

在具有标签的单元格的表格视图控制器的上下文中,这应该发生在哪里?订阅者 ( AnyCancellable) 应该去哪里?由于单元格的数量不定,我是否需要一组订阅者?

标签: ioscore-datauikitcombine

解决方案


我猜,像这样的绑定在详细视图的 WWDC 会话中显示。

滚动期间重复使用表格视图单元格。

这就是为什么您不应该将特定数据模型的属性更改绑定到单元格中标签的更新。

相反,您应该在控制器级别观察数据模型的更改,并在发生更改时重新加载表格视图单元格和/或部分。


推荐阅读