Я довольно новичок в мире привязок в какао, и у меня возникли некоторые проблемы (возможно / вероятно из-за недопонимания).
У меня есть синглтон, который содержит NSMutableArray, называемый плагинами, содержащий объекты класса Plugin. У него есть метод loadPlugins, который добавляет объекты в массив плагинов. Это можно назвать в любой момент. Он был добавлен в качестве экземпляра в Интерфейсном Разработчике.
Также в IB есть NSObjectController, выход содержимого которого подключен к синглтону. Существует также NSArrayController, чей contentArray связан с NSObjectController (ключ контроллера - это «выбор», путь к ключу модели - «плагины», имя класса объекта - «Плагин»).
И, наконец, у меня есть табличное представление с 2 столбцами, значения которых привязаны к стандартным объектам NSArrayController с использованием ключей свойств в классе Plugin.
Пока что стандарт (насколько я могу судить по учебникам). Моя проблема в том, что когда метод loadPlugins вызывается в синглтоне и объекты добавляются в массив плагинов, таблица не обновляется, чтобы показать объекты (если только loadPlugins не вызывается до загрузки пера). -reloadData, вызываемый для tableView, ничего не делает.
Есть ли способ сообщить NSArrayController, что указанный массив обновлен? Я понимаю, что есть метод -add: для NSArrayController, который можно использовать в loadPlugins, но это нежелательно, так как я хочу сохранить синглтон полностью отделенным от аспекта отображения.
Это, похоже, связано с:
Обновить привязку какао - NSArrayController - ComboBox
Строка: «редактирование массива за спиной контроллера», возможно, возможно, указывает на проблему, но я надеюсь, что синглтон не сможет знать о контроллере.
Заранее спасибо.
\ редактировать ...
Согласно предложению TechZen, вот привязки:
TableColumn --('arrangedObjects', 'pluginName', Value)--> NSArrayController
NSArrayController --('selection', 'plugins', ContentArray)--> NSObjectController
NSObjectController --(content)--> PluginsManager