将同一个表的两列绑定到两个不同的NSArrayController会产生奇怪的结果

时间:2010-07-22 08:19:34

标签: cocoa

我正在尝试理解可可绑定,但我发现了一个我真的无法理解的问题。

我有一个非常简单的应用程序,你有一个包含两列的表,我想将这两列绑定到myController对象,该对象有两个文字字符串对象的NSArray。

所以我创建了两个NSArrayController并将它们绑定到myController中的两个数组之一。 然后我使用模型键路径将表列绑定到每个NSArray:description,作为Controller Key:arrangeObjects,并作为Class Name:NSString。

结果确实很奇怪:在第二列中一切都没问题,但在第一列中我只得到了一个“(”和第一列的每个值。
如果我解开第二列,第一列开始运作良好,就更奇怪了。

我尝试创建两个不同的表并将它们的列绑定到相应的NSArrayController,然后它就可以了。

所以我的印象是,同一个表中的列互动是某种方式 有什么想法吗?

2 个答案:

答案 0 :(得分:1)

您尝试为单个表使用多个数据源。相反,使用一个数组控制器并将两个数组转换为一个字典数组,每个字典都有两个字符串。然后,将每个表列绑定到相应的字典键。

答案 1 :(得分:1)

听起来你在第一列中得到的实际上是一个数组的描述(看起来像):

(
"firstValue",
"secondValue",
 ...
"nthValue"
);

我不能认为我已经阅读过任何文档,说你不能将不同的tablecolumns绑定到不同的数组控制器(现在也找不到),但我可以看到为什么它可能不起作用。在某些时候,表 view 本身需要知道有多少行,选择哪些行和相关信息 - 绑定到多个数组控制器意味着每个行可能有多个答案问题。这意味着假设每个表视图只能有一个数组控制器是合理的,即使没有什么可以阻止你设置更多。