NSPersistentStore
из-за неправильной миграции модели данных.
Я все еще вижу файлы .sqlite и связанные с ними файлы базы данных в каталоге документов, и если я перехожу к старой версии, все работает отлично со всеми данными. Мой вопрос в том, могу ли я оправиться от этого с помощью обновления приложения, как-то перенастроить существующий NSPersistentStore
и добавить его в NSPersistentStoreCoordinator?
EDIT: поэтому я фактически не изменил свой xcdatamodel сам, следовательно, "длинный рассказ короткий". Тем не менее, я удалил XMPPFramework из своего проекта, и у меня возникло ощущение, что это могло вызвать проблемы с основными данными.
EDIT:
Я не внес никаких изменений непосредственно в мою модель данных, но я точно указал на эту проблему. Я извлекал мой NSManagedObjectModel
с помощью [NSManagedObjectModel mergedModelFromBundles:nil]
, который объединяет ВСЕ модели данных, присутствующие в комплекте. Это включало все модели данных, которые поставлялись с XMPPFramework, и теперь, когда структура была удалена, NSManagedObjectModel, который передается в [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel]
, отличается, что приводит к сбою.
Я решил проблему, используя FMDB для извлечения содержимого существующей БД, затем создал новый файл sqlite и указал координатора постоянного хранилища на этот новый файл sqlite. Затем я просто вставлял все существующие данные в новую базу данных, перебирая существующие данные и создавая соответствующие NSManagedObject
s. Я также остановил использование mergedModelFromBundles
для извлечения моей модели данных и вместо этого использовал initWithContentsOfURL
.