Является ли NSDocument и CoreData возможной комбинацией или NSPersistentDocument является единственным способом? - PullRequest
6 голосов
/ 11 октября 2011

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

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

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

Это, кажется, логичный способ структурировать моиприложение.Проблема заключается в том, что, когда я создаю приложение на основе NSDocument и устанавливаю флажок use CoreData, вместо того, чтобы делать из него приложение на основе NSDocument со средствами CoreData, оно делает его приложением на основе NSPersistentDocument.

Я не знаюне думаю, что это поведение, которое я хочу.Есть ли способ использовать CoreData, но все еще есть приложение на основе NSDocument?Или NSPersistentDocument, что я должен использовать в конце концов?Я неправильно понимаю весь бизнес NS * Document?Есть ли у вас какие-либо советы по структуре моего приложения?

Спасибо за любую помощь!

1 Ответ

4 голосов
/ 11 октября 2011

Да, вы можете использовать Core Data без использования NSPersistentDocument.Просто создайте NSPersistentStoreCoordinator и NSManagedObjectContext напрямую.Вот некоторый код: как создать NSManagedObjectContext

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

Вместо этого, если хотите, вы можете дополнительно использовать Core Data.Представьте расписание учеников с помощью NSManagedObject s и позвольте NSPersistentDocument обрабатывать загрузку и сохранение контекстов.Вы получаете много полезных функций, таких как отмена-повтор, бесплатно.

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