【问题标题】:Binding to NSArrayController's arrangedObjects shows an open parenthesis绑定到 NSArrayController 的排列对象显示一个左括号
【发布时间】:2012-05-13 14:32:27
【问题描述】:

我有一个 NSArrayController 通过其contentArray 绑定绑定到我的可变模型数组。我有一些控件(如检查器),我想在其中显示数组中对象的一些属性。我将控件的值绑定到我的 NSArrayController 的arrangedObjects.property

当我将一个对象添加到我的模型数组时,所有控件都显示一个左括号 (。如果我将控件绑定到 selection.property 并让 NSArrayController 一直选择所有对象,它就可以工作。但我想知道为什么它不适用于安排内容?你有什么想法吗?

【问题讨论】:

    标签: objective-c cocoa binding key-value-observing nsarraycontroller


    【解决方案1】:

    您将哪些控件绑定到阵列控制器?各种控件对其绑定执行不同的操作。

    左括号是数组description 的第一行。控件需要一个字符串,并通过调用 -description 从绑定的事物中获取一个字符串。

    【讨论】:

    • 我正在使用文本字段。如果我将控件的值绑定到 arrayObjects.someProperty (一个 NSString 属性),你知道为什么它会得到数组的描述吗? (如果是这样,为什么只有第一个字符?)。
    • -[NSArray valueForKey:] 返回一个通过在每个元素上调用 -valueForKey: 构建的数组。因此,如果someProperty 是字符串属性,则键路径“arrangedObjects.someProperty”是字符串数组。当您将文本字段的值绑定到数组控制器时,您期望它意味着什么?当数组没有项目或有多个项目时,文本字段应该包含什么? (这不是第一个字符,而是第一行。尝试从文本字段中选择所有字符并粘贴到文本编辑器中。)
    • 好吧,我希望它显示属性(如果数组中的所有对象都相同)。或者当有多个不同的值时显示占位符“多个值”。如果我将文本字段绑定到 selection.someProperty (并使数组控制器始终选择每个对象),这正是发生的情况。而且我不明白为什么这与简单地使用arrangedObjects.someProperty 之间会有任何区别。
    • selection 属性是特殊的。阅读其中的文档以及它与 selectedObjects 的不同之处。
    • 哦,我明白了,谢谢。那么有没有简单的方法可以像这样绑定到整个数组?
    猜你喜欢
    • 2012-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多