Я пытаюсь использовать функцию миграции в CoreData. Я следовал Документации Apple. У меня есть проблема в следующем методе:
/**
Returns the managed object model for the application.
If the model doesn't already exist, it is created by merging all of the models found in the application bundle.
*/
- (NSManagedObjectModel *)managedObjectModel {
if (managedObjectModel != nil) {
return managedObjectModel;
}
/*
* NSInvalidArgumentException', reason: '*** -[NSCFArray insertObject:atIndex:]: attempt to insert nil'
* 2010-02-17 16:27:15.338 Patrimoine[3037:207]
*/
managedObjectModel = [[NSManagedObjectModel mergedModelFromBundles:nil] retain];
return managedObjectModel;
}
Кажется, что существует та же проблема на http://iphonedevelopment.blogspot.com/2009/09/core-data-migration-problems.html
Все же я действительно выбирал метод, который Apple предлагает, при помощи пункта меню "Add Model Version".
У Вас есть какая-либо идея?
Более подробный ответ от инженера поддержки Qt; Я думаю, что первый абзац полезен, так как я не знал, что раньше:
-121--1490419-я думаю, что это недоразумение в самом деле. При наличии проекта Qt создан с помощью надстройки, затем может изменить этот проект в qmake сформированный проект Qt - и наоборот; Если у вас есть .vcproj, который был генерируется путем выполнения qmake -tp vc, затем вы можете преобразовать его в надстройку Qt проект.
Нет функциональных возможностей для преобразования обычный проект win32 в Qt разрешенный проект, поэтому предложение созданный по-прежнему действителен, см.
https://bugreports.qt.io/browse/QTVSADDINBUG-27
Я могу видеть из истории этого сообщить, что он был закрыт и снова открыт снова, так что я предполагаю, что был недоразумение относительно того, что вы искали в первую очередь.
При создании .pro для проекта используя qmake, вы должны иметь возможность для создания файла .vcproj с помощью 'qmake -tp vc 'в этом PRO-файле. Руководство qmake доступно здесь:
http://doc.qt.io/qt-5/qmake-manual.html
Надеюсь, это поможет.
С уважением,
-
Инженер по поддержке, разработка Qt Рамки, Nokia
Ваше предположение «Я бы ожидал, что он будет следовать за страной, так как если я нахожусь в стране, то я говорю по-английски или по-итальянски числа в этой стране записаны с десятичным разделителем в виде запятой». В нескольких двуязычных странах существуют специальные языковые правила форматирования чисел. Среди стран с правилами форматирования в JDK Sun это касается Канады, Индии и Люксембурга.
-121--3586942-Необходимо очистить проект. Как только вы «версию» модель Xcode перемещает его в пакет (папку), но он не удаляет старый. В этом случае при следующем запуске приложения в пакете будет две копии модели; старый и новый, который находится внутри пучка momd.
Выполнение проекта - > Очистить все решит эту проблему.
Я обнаружил, что использование метода mergedModelFromBundel: не работает с миграцией; Я переключился на -initWithContentsOfURL :, и он отлично работает. Обратите внимание, что вы должны запустить его с URL-адреса, указывающего на файл ".momd".
Всем спасибо!
Все это сработало, но только после того, как я использовал опцию «Чистая сборка».
Дополнительную информацию см. В другой теме о переполнении стека: Использование mergedModelFromBundles: и управление версиями (CoreData)
Справочник по основным данным iPhone содержит довольно приличную статью по этому поводу. Формальный процесс из документации - это «Автоматическая облегченная миграция».
Еще раз спасибо, - Батгар
Кроме того, если вы переименуете свои модели в любой момент, обязательно повторите шаг «установить текущую модель», переключившись на более старую, а затем обратно на новую. модель снова. Моя настройка сборки не сбрасывалась автоматически и продолжала устанавливать «имя текущей модели» на несуществующую модель, что приводило к той же самой проблеме.
Вы всегда можете проверить правильность этого параметра в папке ресурсов продукта сборки внутри импортированного каталога .momd в файле с именем versioninfo.plist - параметр для текущей модели ДОЛЖЕН соответствовать фактическому имени вашей модели.