2010-02-04 1 views
1

Привет Я использую NSTreeController для управления NSOutlineView. Это приложение загружает закладки из файла в приложение. Как и в примере SourceView в АЦП:NSTreeController Как сохранить файл

http://developer.apple.com/mac/library/samplecode/SourceView/index.html

Мои вопросы Как сохранить закладки в файл, как только пользователь делает изменения. Должен ли я поддерживать массив/дерево внутри моего приложения и сохранять до выхода из системы или есть ли более простые методы?

ответ

2

Вы хотите отменить действие, происходящее в populateOutline методе MyWindowController.m. Этот метод читает plist в один словарь, читает значение из этого словаря и использует его для построения дерева. Начните с этого метода и следуйте коду, чтобы увидеть, как он создает дерево. Он использует BaseNode и классы ChildNode для создания модели данных в виде дерева (я не уверен, почему они не просто использовали NSTreeNode). Вы хотите отменить эту процедуру, получив NSDictionary. Затем вы можете использовать writeToFile: atomically:, чтобы сохранить словарь обратно на диск.

Это может быть так же сложно, как вы хотели бы это сделать. Например, текущий код загружает файл словаря в отдельный поток, поэтому вы также можете сохранить его в отдельном потоке. Или вы можете сохранить после каждого редактирования, снова в отдельном потоке.