将NSArrayController绑定到NSDictionary allValues

时间:2012-09-20 22:46:52

标签: cocoa binding nsdictionary cocoa-bindings nsarraycontroller

我遇到过一些场景,我想在NSTableView中的NSDictionary中显示一些条目。 (我对用户NSDictionaryController的直觉总是因为需要让每个对象都实现copyWithZone而被挫败,我觉得这是一个荒谬的要求,对可用性来说是致命的......)

相反,我正在尝试将NSArrayController绑定到NSDictionary的allValues属性,目的是将表的各个列绑定到数组中对象的各种属性。但是,我无法通过数组控制器的Controller Key和Model Key Path属性找到在Cocoa中指定此绑定的正确方法。

当我尝试将数组直接绑定到allValues时,数组控制器的arrangeObjects属性一直是空的 - 即使对象被添加到字典中,当添加被[dictionary willChangeValueForKey:@“allValues”]和[字典]包围时didChangeValueForKey:@“allValues”]调用,即使在添加对象后在数组控制器上调用setContent :.

当然,我找到了这个Stack Overflow线程:

Binding to an NSDictionary's "allValues" array

...并在Model Key Path字段中尝试了各种版本的@“@ allValues”,但没有一个产生所需的结果。

所以这是我的问题:如果我将ArrayControllerOne绑定到一个对象,并且我想将ArrayControllerTwo绑定到ArrayControllerOne.selection中的NSDictionary属性(称为“instances”)的allValues属性,那么我应该在控制器密钥和模型密钥路径字段?

提前致谢...

1 个答案:

答案 0 :(得分:2)

你一定错过了一个,因为我发现你可以使用dict绑定数组控制器的内容数组到字典的allValues。@ allValues(没有引号),其中dict是字典的属性名。为什么会这样,我不知道 - 我找不到任何相关的文档。

顺便说一句,如果我在字典中添加一个新的键值对,我使用self.dict = _dict;获取表视图以进行更新。