2012-04-29 2 views
7

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

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

ответ

10

Это был я шесть месяцев назад! Я не нашел достойный учебник либо, но начал с новым проектом, используя шаблон Xcode проекта по умолчанию:

enter image description here

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

  • Класс документа, созданный Xcode, является моим контроллером верхнего уровня. Я не использую NSDocumentController.
  • В каждом примере использования моего приложения есть несколько NSViewControllers, которые управляют различными видами прецедента. Эти контроллеры динамически меняются местами. Контроллеры верхнего уровня управляются классом NSDocument (NSPersistentDocument в моем случае, когда я использую Core Data).

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

Примечание: использование основных данных не является обязательным, но со временем я полюбил его и считаю, что он очень мощный и требует огромного времени. Когда вы решите не использовать Core Data, вышеуказанная настройка по-прежнему будет работать, но вам придется управлять своими данными.

EDIT: Этот post объясняет релевантность NSDocumentController.

EDIT2: This one от Apple также интересно читать.

EDIT3: вам нужны 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 и загрузить имя XIB DeparmentView.

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

+0

Я пытаюсь найти самый простой, канонический способ, мне очень понравились учебные пособия, поскольку они объясняют внутреннюю работу очень хорошо. Пожалуйста, не возражаете ли вы опубликовать какой-то код? Почему вы не использовали 'NSDocumentController'? И если бы я хотел, чтобы это использовало, то где я должен это поставить? Я думаю, у меня будет только один вид - одно окно для каждого документа. –

+0

Я добавил объяснение об использовании NSDocumentController в предыдущем вопросе о себе. – Roger

+0

@EcirHana: См. Также мой комментарий к принятому ответу на вопрос Роджера. –

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