2015-03-20 5 views
0

enter code here Я работаю над инструментом импорта, следуя образцу objc.io, сделанному по адресу https://github.com/objcio/issue-4-importing-and-fetching.NSManagedObjectModel is nil

На раннем этапе программы, где я создаю экземпляр NSManagedObjectModel из URL-адреса, он возвращает nil. Когда я запускаю программу, ошибка, которую я получаю позже, - «Невозможно создать NSPersistentStoreCoordinator с нулевой моделью».

Прилагается скриншот в точке останова после создания модели. Я посмотрел вокруг здесь, и подтвердил, что:

  • HistologyDataImporter.xcdatamodeld принадлежит HistologyDataImporter (целевое членству)
  • NSString Я использую сборки путь совпадает с именем файла модели (» HistologyDataImporter ")
  • Я также пробовал передавать« маму »в качестве расширения до URLByAppendingPathComponent, но при запуске модель по-прежнему равна нулю.

Почему [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL] все еще возвращает ноль?

enter image description here

ответ

0

Поскольку вы используете неправильное местоположение. Что у вас есть:

NSString *path = @"HistologyDataImporter"; 
NSURL *modelURL = [NSURL fileURLWithPath:path isDirectory:NO]; 
moelURL = [modelURL URLByAppendingPathComponent:@"momd"]; 

Если вы звоните fileURLWithPath: с относительным путем, как это, предполагается, чтобы быть относительно текущего рабочего каталога. Ваш код не устанавливает рабочий каталог, но значение для modelURL предполагает, что оно находится где-то в папке с данными Xcode. Это неудивительно, когда вы запускаете приложение из Xcode, но файл модели не находится в этом каталоге.

Вам нужно выяснить, где находится HistologyDataImporter.momd, и убедитесь, что modelURL действительно указывает на это место. Если вы поместите файл модели на рабочий стол, вы можете использовать тот же desktopURL, который у вас есть в main(), и добавить к нему имя файла модели.