Привязка к аранжированным объектам NSArrayController показывает открытую круглую скобку

У меня есть NSArrayController, привязанный к моему изменяемому массиву моделей через его привязку contentArray. И у меня есть несколько элементов управления (например, инспектор), где я хочу показать некоторые свойства объектов в моем массиве. Я привязал значение элементов управления к arrangedObjects.property моего NSArrayController.

Когда я добавляю объект в свой массив моделей, все элементы управления показывают одну открывающую скобку (. Если вместо этого я привяжу элементы управления к selection.property и заставлю NSArrayController постоянно выбирать все объекты, это сработает. Но мне было интересно, почему это не работает с аранжированным контентом? Есть ли у вас какие-либо идеи?


person DrummerB    schedule 13.05.2012    source источник


Ответы (1)


Какие элементы управления вы привязываете к контроллеру массива? Различные элементы управления делают разные вещи со своими привязками.

Открытая скобка — это первая строка массива description. Элемент управления ожидает строку и получает ее из связанной вещи, вызывая -description.

person Ken Thomases    schedule 13.05.2012
comment
Я использую текстовые поля. У вас есть идеи, почему он получит описание массива, если я привяжу значение элементов управления к arrayObjects.someProperty (свойство NSString)? (А если да, то почему только первый символ?). - person DrummerB; 14.05.2012
comment
-[NSArray valueForKey:] возвращает массив, построенный путем вызова -valueForKey: для каждого элемента. Таким образом, ключевой путь аранжированныеобъекты.someProperty представляет собой массив строк, если someProperty является строковым свойством. Что вы ожидаете, что это будет означать, когда вы привязываете значение текстового поля к контроллеру массива? Что должно содержать текстовое поле, если в массиве нет элементов или несколько элементов? (Это не первые символы, это первая строка. Попробуйте выделить все из текстового поля и вставить в текстовый редактор.) - person Ken Thomases; 14.05.2012
comment
Ну, я бы ожидал, что он покажет свойство (если оно одинаково для всех объектов в массиве). Или покажите заполнитель Несколько значений, если имеется несколько разных значений. И это именно то, что произойдет, если я привяжу текстовые поля к selection.someProperty (и заставлю контроллер массива всегда выбирать каждый объект). И я не понимаю, в чем разница между этим и простым использованием rangeObjects.someProperty. - person DrummerB; 14.05.2012
comment
Свойство selection является особым. Прочтите документацию по нему и чем он отличается от selectedObjects. - person Ken Thomases; 14.05.2012
comment
О, понятно, спасибо. Итак, нет ли простого способа привязаться к целому массиву? - person DrummerB; 14.05.2012
comment
Я была такая же проблема. На случай, если кто-то попадет сюда через Google, моя проблема заключалась в том, что я позже переключился на NSArrayController, но все еще имел привязку таблицы Content к массиву. - person Pascal; 20.02.2014