Я работаю в OS X Lion над приложением Какао с базовыми данными, где мне нужно иметь возможность сохранять разные части, скажем, части A и части B, модели данных в отдельных файлах.
Iнеобходимо иметь возможность сохранять оба файла вместе как файл / пакет проекта, а также иметь возможность загружать и сохранять partA независимо от partB.
Загрузка нового файла partA должна заменить все данные, в настоящее время связанные с partA,Сохранение partA не должно сохранять данные, измененные в partB.
Объекты в partA должны поддерживать отношения с объектами в partB, но они могут (и, скорее всего, должны) быть слабыми.
Мой главный вопросявляется: Каков наилучший подход для реализации желаемых функций?
Мой первый подход был один NSManagedObjectModel
, содержащий две конфигурации, по одной для каждой из частей.У меня есть два экземпляра NSPersistentStore
, назначенные моему NSPersistentStoreCoordinator
по одному для каждой конфигурации.И один экземпляр NSManagedObjectContext
с назначенным ему storeCoordinator
.
Сохранение и открытие отдельных файлов в настоящее время являются моей главной задачей в этой аппроксимации.Сообщение NSManagedObjectContext
-save:
, похоже, сохраняет обе конфигурации.Можно ли сохранить только изменения, внесенные в объекты, относящиеся к определенной конфигурации NSManagedObjectModel
?Или мне нужно два NSManagedObjectContext
экземпляра, по одному для каждой из конфигураций?
Открытие файла путем добавления хранилища в persistentStoreCoordinator
для partA добавляет данные в контекст, и до сих пор я не смогзаменить данные.Есть ли способ узнать, какое хранилище связано с определенной конфигурацией, возможно, отправив сообщение на persistentStoreCoordinator
?
Я также подумываю о втором подходе: настройка двух подклассов NSPersistentDocument
один для каждой конфигурации в моей модели данных, чтобы иметь возможность сохранять данные в отдельных файлах.Но я не уверен, что два отдельных экземпляра NSManagedObjectContext
позволят установить отношения между NSManagedObject
подклассами в разных конфигурациях?
Если у кого-то есть хорошая идея или она может указать мне правильное направление илидаже есть пример того, как я мог бы реализовать вышеупомянутые функции, который был бы очень признателен.