Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/105.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何使用Combine将NSManagedObject绑定到表/集合视图单元格?_Ios_Core Data_Uikit_Combine - Fatal编程技术网

Ios 如何使用Combine将NSManagedObject绑定到表/集合视图单元格?

Ios 如何使用Combine将NSManagedObject绑定到表/集合视图单元格?,ios,core-data,uikit,combine,Ios,Core Data,Uikit,Combine,我有一个NSFetchedResultsController和一个动态表视图。我的表格视图单元格有一个文本标签。如何将对象从“获取结果”控制器绑定到单元格 在中,有一个代码段,其中核心数据对象绑定到视图 if let tag = try? fetchRequest.execute().first { nameSubscription = tag.publisher(for: \.name).assign(to: \.text, on: tagLabel) colorSubscriptio

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

在中,有一个代码段,其中核心数据对象绑定到视图

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)
}

在具有带有标签的单元格的表视图控制器的上下文中,这种情况应该发生在哪里?订户(
anycancelable
)应该去哪里?由于单元格数量不确定,我需要订阅服务器集合吗?

我想,在详细视图的WWDC会话中显示了这样的绑定

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

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


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

您的情况与视频的情况不可比。视频不会从获取的结果控制器执行这种绑定,而是从单个获取请求执行这种绑定;它使显示保持最新,以防基础数据发生更改。正如视频中所说,保持从“获取的结果”控制器更新表视图的方法是使用委托方法派生快照并将其提供给可扩散的数据源。

K。编辑我的帖子。好的。这就是我措辞拙劣的问题想要表达的意思。因此,与细胞结合不是一个好主意,因为它们是重复使用的;我应该在我的视图控制器接收更新时重新加载整个单元格。但是如果您使用视频显示的可扩散数据源,则无需重新加载任何内容。是的,这是另一个选项。我只是还没有亲自检查过,所以不能推荐给别人:)