Изменение "мама" на просто "мама" работало для меня.Ответ Маркуса С. Зарры также сработал для меня, как только я установил синтаксис:
managedObjectModel_ = [[NSManagedObjectModel mergedModelFromBundles:nil] retain];
, хотя я понятия не имею, что делает эта строка.
Редактировать: я провел еще несколько исследований, и яТеперь узнайте, что делает вышеприведенная строка и почему она работает / не работает.Приведенная выше строка будет искать в вашем проекте все модели и добавлять их в xcdatamodel.Это работает, если вы не используете версионные модели.Тем не менее, если в будущем вы переключитесь на использование версионных моделей, будут импортированы все версии модели, поэтому вы получите как старое, так и новое вместе, что НЕ то, что вам нужно.Таким образом, решение состоит в том, чтобы сделать одну из двух вещей.Если вы хотите использовать не версионную модель, используйте следующие строки для захвата модели:
NSString *modelPath = [[NSBundle mainBundle]
pathForResource:@"DataModel" ofType:@"mom"];
NSURL *modelURL = [NSURL fileURLWithPath:modelPath];
managedObjectModel_ = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
Если вы хотите использовать версионную модель (рекомендуется), выберите модель и запустите Дизайн -> Модель данных -> Добавить версию модели из меню, чтобы создать версионную модель.Это автоматически изменит расширение вашей модели с xcdatamodel на xcdatamodeld.Как только это будет сделано, используйте следующие строки:
NSString *modelPath = [[NSBundle mainBundle]
pathForResource:@"DataModel" ofType:@"momd"];
NSURL *modelURL = [NSURL fileURLWithPath:modelPath];
managedObjectModel_ = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
Обратите внимание, что единственная разница заключается в изменении параметра ofType с @ "mom" на @ "momd".Я надеюсь, что это проясняет, что происходит для всех, кто пытается понять CoreData.D