Это довольно широкий вопрос. Вы всегда должны хранить данные модели в каком-либо объекте модели, будь то объект Core Data, NSMutableDictionary
или пользовательский объект вашего собственного создания. Вы определенно НЕ должны хранить данные в экземпляре NSTreeController
или NSOutlineView
, это не объекты модели.
Если вы используете Core Data для остальной части своего приложения и вам необходимо сохранить данные, которыми манипулирует представление структуры, то это хороший выбор, но он может быть излишним, если у вас есть только простые требования.
Для управления тем, что отображается в виде структуры, вы можете использовать NSTreeController
или свой собственный объект контроллера, который отвечает на источник данных NSOutlineView
и протоколы делегирования. На практике вы можете использовать и то и другое, поскольку некоторые вещи, такие как то, является ли элемент элементом группы или нет, могут управляться только с помощью методов делегата NSOutlineView
.
В своем личном опыте я обнаружил, что с NSTreeController
может быть очень трудно иметь дело с чем-либо, кроме очень простых задач, и теперь я больше его использую, я считаю, что гораздо проще просто использовать методы источника данных в моем собственном контроллере .
Что касается изменения содержимого контурного вида, вы всегда должны модифицировать модель через контроллер, вы никогда не должны обновлять вид напрямую. Вы могли бы реализовать такие методы, как -add:
в вашем контроллере или использовать метод -add:
для NSTreeController
, если вы его используете.
Затем контроллер вашего представления должен обнаружить изменение в модели и попросить обновить представление. Контроллер вида и контроллер модели могут быть одним и тем же объектом, но это не обязательно. Наблюдение значения ключа - это полезная технология, которая может информировать вашего контроллера об изменении модели.
Вот пример кода от Apple, который может оказаться полезным:
http://developer.apple.com/mac/library/samplecode/SourceView/
http://developer.apple.com/Mac/library/samplecode/AbstractTree/