Как добавить «нормальную» логику NSDocument в модифицированную архитектуру на основе проекта? - PullRequest
2 голосов
/ 27 ноября 2011

Я планирую создать приложение Mac на основе проекта. Он имеет свой собственный формат файла проекта и в настоящее время может читать и обрабатывать его. Это уже проблема всей истории: я открываю файл проекта, а не файлы каждый по отдельности.

Это означает, что архитектура NSDocument считает, что пользователь редактирует файл проекта. Он / Она не. В настоящее время мое приложение берет на себя часть чтения, открывая файлы проекта, каждый из которых вручную, но трудно реализовать что-либо еще, например автосохранение или версии для файлов в проекте, потому что они просто ссылаются на файл проекта.

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

В настоящее время параметры «Сохранить» и «Вернуться к сохраненному» отключены. Почему это происходит? Обычно параметры должны быть включены для файла проекта.

1 Ответ

4 голосов
/ 27 ноября 2011

Похоже, вы предполагаете, что основанное на документе приложение может обрабатывать только один тип документа.Это не так, архитектура документа может обрабатывать столько разных типов документов, сколько вам нужно.

Просто создайте два разных подкласса NSDocument, один для вашего файла проекта и один для ваших реальных документов.Вам нужно будет отредактировать ваш Info.plist, чтобы добавить новый тип документа и связать его с собственным расширением файла / UTI.

Делая это таким образом, вы делаете это очень просто для обоих типов документов (файл проектаи файл документа), чтобы воспользоваться преимуществами архитектуры документа.

Все может стать немного сложнее, если вы обрабатываете документы, загружая их в родительское окно проекта (как в Xcode).Если это так, то вам нужно написать пользовательские подклассы NSDocumentController и NSWindowController.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...