Модель 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-файл.
Убедитесь, что вы импортировали все это в свой проект!