2014-09-28 4 views
0

Я пытаюсь использовать привязки Cocoa для заполнения NSTableView с использованием объектов Core Data. Я пришел в точку, в которой я ошеломлен поведением моего приложения. Контроллер массива находится в режиме «Entity Name» и использует мой объект «Song».Связывание основного объекта данных с NSTableView: ключ модели не работает

Вид таблицы, в которую я пытаюсь загрузить данные, содержит два столбца: один для названия песни и другой для имени исполнителя (художник - это еще одна сущность, которая имеет отношение к песне). Через Interface Builder я смог успешно связать контроллер массива с таблицей и установить привязки для двух столбцов. Однако по какой-то причине одно из привязок столбцов отлично работает (имя исполнителя), в то время как другое не заполняется вообще (название песни).

Я просмотрел каждый вид в схеме документа и гарантировал, что оба столбца настроены точно так же. Я добавил несколько скриншотов ниже, показывая настройку привязки в Interface Builder.

Связывание на NSTableColumn, представляющий название песни Binding on the NSTableColumn representing the Song Title

Binding на NSTextField внутри NSTableCellView (тот, который не работает) Binding on the NSTextField within the NSTableCellView (the one that is not working)

Binding на NSTextField для художника Имя (тот, который работает) enter image description here

Конечный (не функционирующий) приводят к enter image description here

Есть ли очевидная причина, почему этот подход не работает? Любая помощь будет принята с благодарностью. Я также могу предоставить любую дополнительную информацию, которая может понадобиться для ответа на этот вопрос.

+0

Попробуйте [-NSBindingDebugLogLevel 1] (https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/CocoaBindings/Concepts/Troubleshooting.html) – stevesliva

ответ

0

Просто дикая догадка. Поскольку вы говорите о сущности Песни. Может быть, вам нужно привязать имя песни к объекту Value.song.title?

1

похоже, вы используете NSTableView, основанный на представлении, в отличие от старой ячейки. Каждая из них имеет другую конфигурацию для привязок. В представлении таблицы на основе представления вам необходимо привязать содержимое tableview к контроллерам arrayObjects (см. Ниже), вам не нужно иметь дело с отдельными привязками столбцов, которые предназначены для табличных представлений сотовой ячейки.

Ваши оставшиеся крепления выглядят прекрасно. enter image description here

0

Если «Исполнитель» - это не только атрибут сущности «Песня», но и сама сущность (которая, вероятно, будет иметь отношение к «Песне»), тогда я думаю, что вам нужно иметь отдельный контроллер массива, подключенный к этому столбцу, чтобы он работал правильно.

Смежные вопросы