这是场景。有两个CoreData模型对象A和B,它们之间的关系是A
有多个B
,由属性setOfBs
表示。我想显示两个表,一个列出所有的As(表1),另一个列出所有的B(表2)。当用户选择表1中的项目时,表2中的选择改变以反映表1中选择的A的setOfBs
的值。表的内容不改变,仅选择改变。如果表1中的选择发生变化,则会更改setOfBs
以反映出来。
这可以使用绑定来完成吗?或者需要定制逻辑?
答案 0 :(得分:1)
我相信你必须编写额外的逻辑才能使这种方法起作用。原因如下:NSArrayControllers的选择绑定(以及绑定到它们的所有UI对象)都基于选择索引但是当你有一个类型为A的对象时,它会出现一组B 对象。假设您有一个As的阵列控制器和Bs的阵列控制器,您需要一种方法从Bs数组中的那些对象到它们的索引以便设置选择B的阵列控制器。这不是难以编写的代码,但我不相信你只能用绑定来做到这一点。
那就是说,正如你在评论中推测的那样,这似乎不是编辑这种关系的好方法。在常见情况下,TableView选择是 UI 状态,而不是模型状态。如果您构建一个类似于您描述的UI,则UI状态和模型状态将变为相同。我并不是说这是不可能的,或者说本来就不好,但这并不是真正做到这种事情的“标准”方式。一种常见的模式如下:
即使这样的方法也需要额外的逻辑,因为似乎没有办法(开箱即用)绑定到“所有B不在选定的A的setOfBs中”而不编写代码。同样,编写代码并不困难,但我不清楚这可以单独使用绑定来完成。我错了,但那是我对情况的解读。