带有master-detail的cocoa绑定问题,其中detail包含一个数组

时间:2016-11-03 05:02:02

标签: macos core-data cocoa-bindings nsarraycontroller

这是一个macOS应用程序,使用Core Data,没有Documents,也没有Storyboard。我正在尝试使用NSArrayControllers&绑定以显示我的数据。

数据模型2实体: 书(具有作者,标题,模糊等属性)和 章节(具有标题之类的属性)

这两个实体以一对多关系连接:

Book.chapters< - >> Chapter.book。

该应用可以有多本书,它在tableView中显示。很简单。我在XCode中设置了一个名为“Books Array Controller”的阵列控制器。我将其实体设置为“预订”并检查“准备内容”。

这是一个主要细节,其中详细信息之一是要在其自己的表中显示的数组。这就是给我带来问题的原因。

我按如下方式绑定Books Array Controller:
1. managedObjectContext绑定到Delegate的self.managedObjectContext。 2. bookListTableView的表格内容>内容绑定到“Books Array Controller”控制器键= arrangeObjects 3.然后对于表中的每一列,我选择textViewCell并将其值绑定到“Table Cell View”模型键路径= objectValue.title,objectValue.author等。 4.我有一个textView,通过将Attributed String绑定到“Books Array Controller”控制器键=选择,模型键路径= blurb,所选书籍的“blurb”(属性字符串)。

所有这一切都很好。

但是我在尝试弄清楚如何在另一个表中显示章节列表时遇到了很多问题。我已经尝试创建另一个名为“Chapters Controller”的阵列控制器。我将其实体设置为“章节”并检查“准备内容”。

我按如下方式绑定Chapters控制器: 1. managedObjectContext绑定到Delegate的self.managedObjectContext。 (就像另一个一样)
2.控制器内容>内容集绑定到“Books Array Controller”控制器键=选择,模型键路径=章节 3.我将表的内容绑定到“章节控制器”控制器键=选择,模型键路径=章节 4.然后对于表中的每一列,我选择textViewCell并将其值绑定到“Table Cell View”模型键path = objectValue.title等。

在第二张表中没有显示任何内容,即章节列表中的内容。甚至没有一堆“Table View Cell”的东西。它是空的。我尝试了一些我不会厌烦你的变化。显然我缺少一些东西。有什么帮助吗?

应用程序正确生成其Book对象,并且Books看起来正确地创建了Chapter对象。

---

更新:我试图遵循Willeke的建议,但仍然做得不对。

以下是绑定......

书籍控制器绑定:
Books controller binding

章节控制器绑定:
Chapters Controller binding

书籍TableView绑定:
Books TableView binding

章节TableView绑定:
Chapters TableView binding

1 个答案:

答案 0 :(得分:1)

Chapters数组控制器的内容集绑定到Books数组控制器的选择。在Books表视图中选择行时,必须通过绑定选择索引来同步Books数组控制器的选择。我通常将内容绑定到arrangedObjects,选择索引绑定到selectionIndexes,将排序描述符绑定到sortDescriptors

Chapters表视图中的绑定与Books表视图相同。将Chapters表视图的内容绑定到Chapters数组控制器的排列对象。