Модель CoreData не работает должным образом

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

Приложение было написано на Xcode 4.2 и с целью развертывания iOS 4.1, так что до ARC и раскадровки.

Теперь я хочу немного обновить его, установить цель развертывания на 5.1 и адаптировать код к последнему Xcode, поэтому реализую раскадровки и ARC, потому что теперь я к этому привык и считаю более интуитивно понятным управление этим кодом. Итак, я начал новый проект с нуля, я создал раскадровку и перетащил большую часть материала из версии 1.0. Кроме того, я проверил, что "Источники компиляции" и "Копировать ресурсы комплекта" на вкладке Фазы сборки в порядке и включают в себя все, что я перетащил.

Однако у меня возникла проблема с базой данных. Когда я пытаюсь запустить приложение, оно вылетает, сообщая мне, что:

'Cannot create an NSPersistentStoreCoordinator with a nil model'

Так что я не уверен, что я делаю не так здесь. Я не хотел менять модель CoreData, потому что все остается прежним, я не добавил или не удалил ни один объект или атрибут. Поэтому я подумал, что этого было бы достаточно, чтобы перетащить старое модельное в новый проект.

Любое предложение здесь? Я мог бы с легкостью написать весь материал codeData с нуля, потому что он не очень сложный, но я считаю, что пользователь, который написал полную версию и сохранил пользовательские данные, был бы очень расстроен.

Любое предложение будет действительно приветствоваться. Заранее спасибо!

1 ответ

Решение

Вы должны проверить свой метод AppDelegate managedObjectModel, Убедитесь, что он извлекает модель (проверьте с помощью NSLog заявления). Скорее всего, это связано с соглашением об именах:

NSString *modelPath = [[NSBundle mainBundle] 
    pathForResource:@"Model" ofType:@"momd"];
NSURL *modelURL = [NSURL fileURLWithPath:modelPath];

Проверьте специально для вашего modelPath,

Кроме того, возможно, что при импорте модели вы не импортировали все файлы. Модель на самом деле является каталогом под названием YourModel.xcdatamodeld где финал d предположительно расшифровывается как "каталог". В Finder вы можете щелкнуть правой кнопкой мыши и выбрать Show Package Contents чтобы убедиться, что необходимые файлы есть (еще лучше использовать командную строку). Внутри должен быть файл с именем YourModel.xcdatamodel (без d). В той стороне должен быть хотя бы файл с именем content (иногда также layout). Это простой XML-файл.

Убедитесь, что вы импортировали все это в свой проект!

Другие вопросы по тегам