Является ли NSDocument правильным выбором, когда большинство «документов» приложения не основаны на файлах? - PullRequest
4 голосов
/ 25 января 2012

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

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

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

Ответы [ 2 ]

3 голосов
/ 26 января 2012

Я думаю, что использование NSDocument было бы отличным выбором. Это позволит вам воспользоваться большинством предоставляемых функций, таких как NSDocumentController, поддержка отмены, управление окнами и т. Д. Вам придется переопределить некоторые методы, такие как загрузка и сохранение. Может быть трудно заставить меню «Открыть последние» правильно работать с этими документами (возможно, использовать собственную схему URL?). Недостатки использования NSDocument - это не то, что я могу придумать. Вам придется написать все с нуля, и будет еще сложнее интегрировать их в остальную часть приложения.

1 голос
/ 26 января 2012

Я построил свое приложение на основе NSDocument - ну, на самом деле NSPersistentDocument, поскольку оно предоставляет доступ к службам Core Data для хранения графа моего объекта.Это прекрасно сработало для меня, и я не нашел никаких недостатков.

Когда вы подумаете о работе с NS(Persistent)Document, вам придется придумать какой-то механизм для передачи экземпляра вашего документа на различные контроллеры, которые вы создадите.управлять представлениями / окнами и связанными с ними данными.Я реализовал это, создав универсальный класс контроллера View, способный содержать ссылку на мой экземпляр NSPersistentDocument.Все мои контроллеры представления являются подклассами этого универсального контроллера и, следовательно, способны легко получать доступ к службам Core Data.

Мое приложение управляет 15 объектами Core Data, объемы которых варьируются в зависимости от объекта от сотен до сотен тысяч экземпляров.Не является частью вашего первоначального вопроса, но вы можете рассмотреть возможность использования Core Data для сохранения объекта.Я нашел, что это экономит время при создании моего приложения (раньше он работал с PHP, Java и различными уровнями БД, которые, как правило, не сильно влияют на производительность).

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