Это был я шесть месяцев назад! Я не нашел достойный учебник либо, но начал с новым проектом, используя шаблон Xcode проекта по умолчанию:
Я начал с установкой 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 использует, и сделать свой собственный выбор.
Я пытаюсь найти самый простой, канонический способ, мне очень понравились учебные пособия, поскольку они объясняют внутреннюю работу очень хорошо. Пожалуйста, не возражаете ли вы опубликовать какой-то код? Почему вы не использовали 'NSDocumentController'? И если бы я хотел, чтобы это использовало, то где я должен это поставить? Я думаю, у меня будет только один вид - одно окно для каждого документа. –
Я добавил объяснение об использовании NSDocumentController в предыдущем вопросе о себе. – Roger
@EcirHana: См. Также мой комментарий к принятому ответу на вопрос Роджера. –