2016-01-09 10 views
0

У меня есть существующее (и полностью работающее) приложение, использующее NSPersistentDocument для сохранения файлов приложений.
Теперь мне нужно создать новый объект, этот новый объект полностью не связан с файлами приложения, и он будет содержать кэш приложения, поэтому я буду использовать его для сохранения в отдельном файле.
Мой проект содержит MyDocument.xcdatamodeld, используемый NSPersistentDocument, для реализации новой функции я создал новую модель данных Cache.xcdatamodeld и добавил новую модель к модели (я не написал код, который использовался только мастерами XCode), но когда я запускаю приложение и пытаюсь открыть существующее приложение файл я получаю ошибкуИсключить сущность из NSPsistentDocument

модель используется для открытия магазина несовместима с тем, которая используется для создать магазин

Я понимаю, это происходит потому, что конфигурация модели для нового объект тот же для NSPersistentDocument но как я могу отделить его?
Создание новой конфигурации в модели данных не работает, поскольку объект не может быть удален из значения по умолчанию.
Любая идея, как сделать NSPersistentDocument игнорировать новую сущность и продолжать работать со старой моделью данных?

Я не размещать исходный код, так как это происходит, просто добавив новую модель и сущность проекта

ответ

1

Из документации NSPersistDocument's managedObjectModel property:

@property(readonly, strong) NSManagedObjectModel *managedObjectModel

Обсуждение

По по умолчанию базовая структура данных создает объединенную модель из всех моделей в наборе приложений ([NSBundle mainBundle]). Вы можете переопределить это свойство и вернуть определенную модель, используемую для создания постоянных хранилищ. Типичная реализация может включать в себя код, подобный следующему фрагменту:

NSBundle *bundle = [NSBundle bundleForClass:[self class]]; 
NSString *path = [bundle pathForResource:@"MyModel" ofType:@"mom"]; 
NSURL *url = [NSURL fileURLWithPath:path]; 
NSManagedObjectModel *model = [[NSManagedObjectModel alloc] initWithContentsOfURL:url]; 
+0

Wow я полностью пропустил описание апи, он отлично работает, спасибо! – dafi