Вопрос по cocoa – Учебник / пример минимального основанного на документе приложения

8

Я пытаюсь понять, как работает Какао, но я борюсь с одной вещью. Я виделhttp://cocoawithlove.com/2010/09/minimalist-cocoa-programming.html а такжеhttp://casperbhansen.wordpress.com/2010/08/15/dev-tip-nibless-development/ и я думаю, что я немного понял.

Теперь я хотел бы сделать то же самое, но для «основанного на документе приложения». Пожалуйста, кто-нибудь знает учебник или пример сродни вышеперечисленным? Кроме того, что мне нужно сделать, чтобы это работало? Я думаю, что мне нужно создатьNSDocumentController - но как это относится к NSApplication? И я создаюNSDocument оттуда? Честно говоря, я немного растерялся ...

Ваш Ответ

1   ответ
10

но начал с нового проекта, используя шаблон проекта Xcode по умолчанию:

enter image description here

Я начал с настройки, которую Xcode генерирует для вас, когда вы начинаете новый проект, и реализовывал ее по частям, пока я шел. Здесь, на Stackoverflow, есть хорошее чтение об использовании различных классов контроллеров, но вот что я сделал:

The document class, generated by Xcode, is my top level controller. I do not use NSDocumentController. Each use case of my app has a number of NSViewControllers which manage the various views of the use case. These controllers are dynamically swapped in and out. The top level controllers are managed by the NSDocument class (NSPersistentDocument in my case as I use Core Data).

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

Примечание. Использование базовых данных необязательно, но со временем я полюбил их и считаю, что они очень мощные и позволяют сэкономить время. Если вы решите не использовать Core Data, вышеуказанная настройка будет работать, но вам придется управлять своими собственными данными.

РЕДАКТИРОВАТЬ: Этосообщение объясняет актуальность NSDocumentController.

EDIT2:Вот этот от Apple тоже интересно читать.

РЕДАКТИРОВАНИЕ 3: Вам нужны NIB (или XIB, как они теперь называются), поскольку они содержат пользовательский интерфейс вашего приложения. Вы вытягиваете их через контроллер представления (подклассNSViewController):

NSString *aControllerName = [anIdentifier stringByAppendingString: @"ViewController"];
NSString *aNibName = [anIdentifier stringByAppendingString: @"View"];
Class aControllerClass = NSClassFromString(aControllerName);
[self setCurrentController: [[aControllerClass alloc] initWithNibName: aNibName bundle: [NSBundle mainBundle]]];

В вышеanIdentifier может бытьDepartmentчто бы создать экземплярDepartmentViewController и загрузить имя XIBDeparmentView.

Вы можете использовать списки для хранения ваших данных, но это не является обязательным требованием. Есть много способов хранить данные ваших приложений. Вам нужно будет прочитать о различных архитектурах Apple и сделать свой собственный выбор.

Я добавил объяснение об использовании NSDocumentController в предыдущем вопросе о себе.
@ Роджер: да, именно так я и начал. Но потом я заблудился, потому что он использует NIB и списки, а NSDocumentController даже не существует, что должно быть ... Нужны ли какие-либо пакеты, чтобы это работало? Ecir Hana
@EcirHana: см. Также мой комментарий к принятому ответу на вопрос Роджера.
@Peter Hosey: Это на самом деле очень полезный комментарий. Я хотел бы классифицировать это как ответ :-)
Я пытаюсь найти самый простой, канонический способ, мне очень понравились уроки выше, так как они очень хорошо объясняют внутреннюю работу. Пожалуйста, не могли бы вы опубликовать код? Почему вы не используетеNSDocumentController? И если бы я хотел его использовать, куда мне его положить? Я думаю, что у меня будет только одно представление - одно окно для каждого документа. Ecir Hana

Похожие вопросы