Какао-приложение на основе документов с несколькими типами документов - PullRequest
3 голосов
/ 14 января 2010

Я хочу создать приложение на основе документов в Какао, но так, чтобы оно могло создавать и обрабатывать различные типы документов. Думайте Word, Excel, Powerpoint все в одном приложении, только намного проще. Но каждое окно будет отличаться в зависимости от типа документа.

Для хранения я буду использовать CoreData. Я думаю о добавлении поля, которое определяет тип документа, так как все они должны иметь одинаковое окончание файла.

Итак, без создания нескольких независимых приложений, что будет лучшим способом для этого? Как мне создать это в Интерфейсном Разработчике? Как мне это закодировать?

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

Заранее спасибо!

Ответы [ 2 ]

14 голосов
/ 14 января 2010

Это то, что система Какао Документ явно предназначена для выполнения. Apple предоставляет документацию , но вот основные моменты.

  • Каждый тип документа является подклассом NSDocument. Если вы используете базовые данные, вместо этого основывайте свой класс на NSPersistentDocument. (Apple имеет базовый учебный курс по использованию базовых данных в приложении на основе документов)
  • Вы сообщаете Какао о видах документов, которые может открыть ваше приложение, и о том, какой класс документов использовать, с помощью Info.plist .
  • Каждый подкласс NSDocument имеет один или несколько NSWindowController объектов, связанных с ним, каждый из которых представляет одно окно. Если у вас будет только одно окно, вам не нужно создавать подкласс NSWindowController. Вы можете поместить свою логику пользовательского интерфейса в ваш подкласс документа. Однако для более чистого кода я настоятельно рекомендую создать подкласс NSWindowController.
  • NSWindowControllerNSDocument, если вы решите не создавать подкласс NSWindowController), могут загрузить окно из NIB, который вы строите в Интерфейсном Разработчике. Фактически, это рекомендуемый подход для создания окон вашего документа.

Надеюсь, это даст вам общее представление о том, как подойти к этому в Какао.

1 голос
/ 14 января 2010

Вы начнете с создания NIB для каждого из ваших типов документов; и подкласс NSDocument для каждого (используйте существующую документную-app-example-NIB для настройки здесь). Затем вы должны установить эти классы для обработки ваших различных типов документов в списке свойств приложения; насколько я помню, в XCode есть несколько полезных инструментов для этого.

Как только это будет запущено, большая часть деталей должна обрабатываться автоматически; но, возможно, вам все равно придется немного поработать над меню «Файл», и я, кажется, помню, что были некоторые проблемы с настройкой типа документа по умолчанию и еще много чего.

В целом, это не намного сложнее, чем создание приложения для одного типа документов.

PS: убедитесь, что вам действительно нужно различных типов файлов; иногда может быть более уместно иметь несколько разных представлений одного и того же файла. Просто мысль. :)

...