Cocoa 正在将核心数据实体绑定到NSTableView:模型密钥不起作用

Cocoa 正在将核心数据实体绑定到NSTableView:模型密钥不起作用,cocoa,swift,interface-builder,nstableview,cocoa-bindings,Cocoa,Swift,Interface Builder,Nstableview,Cocoa Bindings,我正在尝试使用Cocoa绑定来使用核心数据实体填充NSTableView。我已经到了一个地步,我对我的应用程序的行为感到困惑。阵列控制器处于“实体名称”模式,正在使用我的“歌曲”实体 我试图将数据加载到的表视图有两列:一列用于歌曲名称,另一列用于艺术家名称(艺术家是与歌曲有关系的另一个实体)。通过Interface Builder,我成功地将数组控制器绑定到表,并为两列设置绑定。但是,出于某种原因,其中一个列的绑定工作正常(艺术家名称),而另一个列的绑定根本没有填充(歌曲名称) 我已经浏览了文档

我正在尝试使用Cocoa绑定来使用核心数据实体填充NSTableView。我已经到了一个地步,我对我的应用程序的行为感到困惑。阵列控制器处于“实体名称”模式,正在使用我的“歌曲”实体

我试图将数据加载到的表视图有两列:一列用于歌曲名称,另一列用于艺术家名称(艺术家是与歌曲有关系的另一个实体)。通过Interface Builder,我成功地将数组控制器绑定到表,并为两列设置绑定。但是,出于某种原因,其中一个列的绑定工作正常(艺术家名称),而另一个列的绑定根本没有填充(歌曲名称)

我已经浏览了文档大纲中的每个视图,并确保两列的配置方式完全相同。我在下面附上了一些屏幕截图,显示了Interface Builder中的绑定设置

在表示歌曲标题的NSTableColumn上绑定

在NSTableCellView(不工作的)中的NSTextField上绑定

艺术家名称(正在工作的名称)的NSTextField上的绑定

最终(非功能性)结果


这种方法不起作用有什么明显的原因吗?任何帮助都将不胜感激。我还可以提供回答这个问题可能需要的任何其他信息。

只是一个猜测。因为你说的是歌曲实体。
是否必须将歌曲名称绑定到objectValue.song.title?

似乎您使用的是基于“视图”的NSTableView,而不是旧的基于“单元格”的NSTableView。每个都有不同的绑定配置。在基于视图的表视图中,必须将tableview内容绑定到array Controller arrangedObjects(请参见下文),而不必处理用于基于单元格的表视图的单个列绑定


剩下的绑定看起来不错

如果“艺术家”不仅是“歌曲”实体的属性,而且是实体本身(如果它与“歌曲”有关系,则很可能是这样),那么我认为您需要将一个单独的数组控制器连接到该列,以使其正常工作

试一试