cocoa 绑定 w/ master-detail 的问题,其中详细信息包含一个数组
Problems with cocoa bindings w/ master-detail where the detail contains an array
这是一个 macOS 应用程序,使用核心数据,没有文档,也没有故事板。我正在尝试使用 NSArrayControllers 和绑定来显示我的数据。
数据模型 2 个实体:
书籍(具有作者、标题、简介等属性)和
章节(具有标题等属性)
这两个实体以 one-to-many 关系连接:
Book.chapters <—>> Chapter.book.
该应用程序可以有多本书,它显示在 table 视图中。很简单。我在 XCode 中设置了一个名为 "Books Array Controller" 的数组控制器。我将其实体设置为 "Book" 并检查 "prepares content".
它是一个 master-detail,其中详细信息的属性之一是要在其自身 table 中显示的数组。这就是给我带来问题的原因。
我绑定 Books Array Controller 如下:
1. managedObjectContext 绑定到Delegate 的self.managedObjectContext。
2. bookListTableView 的 Table Content > content 绑定到 "Books Array Controller" controller key = arrangedObjects.
3. 然后对于 table 中的每一列,我 select textViewCell 并将其值绑定到 "Table Cell View" 模型键路径 = objectValue.title、objectValue.author、等等
4. 我有一个 textView,selected 书的 "blurb"(属性字符串)通过将属性字符串绑定到 "Books Array Controller" 控制器键 = selection,模型键路径 =简介。
所有这一切都很好。
但是我在尝试弄清楚如何在另一个 table 中显示章节列表时遇到了很多问题。我已经尝试创建另一个名为 "Chapters Controller" 的数组控制器。我将其实体设置为 "Chapter" 并检查 "prepares content".
我绑定章节控制器如下:
1. managedObjectContext 绑定到Delegate 的self.managedObjectContext。 (就像另一个一样)
2. Controller Content > content set绑定到"Books Array Controller" controller key = selection, model key path = chapters.
3. 我将 table 的内容绑定到 "Chapters Controller" 控制器键 = selection,模型键路径 = chapters.
4. 然后对于 table 中的每一列,我 select textViewCell 并将其值绑定到 "Table Cell View" 模型键路径 = objectValue.title,等等
第 2 个 table 中没有显示任何内容,第一个用于章节列表。甚至一堆 "Table View Cell" 东西也没有。它是空的。我已经尝试了很多变体,我不会让你厌烦的。显然我缺少一些东西。有帮助吗?
该应用正确地制作了它的书 objects,并且这些书似乎正确地制作了它们的章节 objects。
————
更新:我已尝试遵循 Willeke 的建议,但我仍然没有做对。
这是绑定...
图书控制器绑定:
章节控制器绑定:
书籍Table视图绑定:
章节Table视图绑定:
Chapters 数组控制器的内容集绑定到 Books 数组控制器的 selection。当您 select Books table 视图中的一行时,Books 数组控制器的 selection 必须通过绑定 selections 索引来同步。我通常将内容绑定到 arrangedObjects
,选择索引绑定到 selectionIndexes
,排序描述符绑定到 sortDescriptors
.
章节 table 视图中的绑定与书籍 table 视图中的绑定相同。将 Chapters table 视图的内容绑定到 Chapters 数组控制器的排列对象。
这是一个 macOS 应用程序,使用核心数据,没有文档,也没有故事板。我正在尝试使用 NSArrayControllers 和绑定来显示我的数据。
数据模型 2 个实体: 书籍(具有作者、标题、简介等属性)和 章节(具有标题等属性)
这两个实体以 one-to-many 关系连接:
Book.chapters <—>> Chapter.book.
该应用程序可以有多本书,它显示在 table 视图中。很简单。我在 XCode 中设置了一个名为 "Books Array Controller" 的数组控制器。我将其实体设置为 "Book" 并检查 "prepares content".
它是一个 master-detail,其中详细信息的属性之一是要在其自身 table 中显示的数组。这就是给我带来问题的原因。
我绑定 Books Array Controller 如下:
1. managedObjectContext 绑定到Delegate 的self.managedObjectContext。
2. bookListTableView 的 Table Content > content 绑定到 "Books Array Controller" controller key = arrangedObjects.
3. 然后对于 table 中的每一列,我 select textViewCell 并将其值绑定到 "Table Cell View" 模型键路径 = objectValue.title、objectValue.author、等等
4. 我有一个 textView,selected 书的 "blurb"(属性字符串)通过将属性字符串绑定到 "Books Array Controller" 控制器键 = selection,模型键路径 =简介。
所有这一切都很好。
但是我在尝试弄清楚如何在另一个 table 中显示章节列表时遇到了很多问题。我已经尝试创建另一个名为 "Chapters Controller" 的数组控制器。我将其实体设置为 "Chapter" 并检查 "prepares content".
我绑定章节控制器如下:
1. managedObjectContext 绑定到Delegate 的self.managedObjectContext。 (就像另一个一样)
2. Controller Content > content set绑定到"Books Array Controller" controller key = selection, model key path = chapters.
3. 我将 table 的内容绑定到 "Chapters Controller" 控制器键 = selection,模型键路径 = chapters.
4. 然后对于 table 中的每一列,我 select textViewCell 并将其值绑定到 "Table Cell View" 模型键路径 = objectValue.title,等等
第 2 个 table 中没有显示任何内容,第一个用于章节列表。甚至一堆 "Table View Cell" 东西也没有。它是空的。我已经尝试了很多变体,我不会让你厌烦的。显然我缺少一些东西。有帮助吗?
该应用正确地制作了它的书 objects,并且这些书似乎正确地制作了它们的章节 objects。
————
更新:我已尝试遵循 Willeke 的建议,但我仍然没有做对。
这是绑定...
图书控制器绑定:
章节控制器绑定:
书籍Table视图绑定:
章节Table视图绑定:
Chapters 数组控制器的内容集绑定到 Books 数组控制器的 selection。当您 select Books table 视图中的一行时,Books 数组控制器的 selection 必须通过绑定 selections 索引来同步。我通常将内容绑定到 arrangedObjects
,选择索引绑定到 selectionIndexes
,排序描述符绑定到 sortDescriptors
.
章节 table 视图中的绑定与书籍 table 视图中的绑定相同。将 Chapters table 视图的内容绑定到 Chapters 数组控制器的排列对象。