Используя mergedModelFromBundles: и управление версиями (CoreData)

Я пытаюсь использовать функцию миграции в 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".

У Вас есть какая-либо идея?

11
задан charlax 17 February 2010 в 15:50
поделиться

4 ответа

Более подробный ответ от инженера поддержки Qt; Я думаю, что первый абзац полезен, так как я не знал, что раньше:

я думаю, что это недоразумение в самом деле. При наличии проекта 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

-121--1490419-

Ваше предположение «Я бы ожидал, что он будет следовать за страной, так как если я нахожусь в стране, то я говорю по-английски или по-итальянски числа в этой стране записаны с десятичным разделителем в виде запятой». В нескольких двуязычных странах существуют специальные языковые правила форматирования чисел. Среди стран с правилами форматирования в JDK Sun это касается Канады, Индии и Люксембурга.

-121--3586942-

Необходимо очистить проект. Как только вы «версию» модель Xcode перемещает его в пакет (папку), но он не удаляет старый. В этом случае при следующем запуске приложения в пакете будет две копии модели; старый и новый, который находится внутри пучка momd.

Выполнение проекта - > Очистить все решит эту проблему.

28
ответ дан 3 December 2019 в 01:15
поделиться

Я обнаружил, что использование метода mergedModelFromBundel: не работает с миграцией; Я переключился на -initWithContentsOfURL :, и он отлично работает. Обратите внимание, что вы должны запустить его с URL-адреса, указывающего на файл ".momd".

4
ответ дан 3 December 2019 в 01:15
поделиться

Всем спасибо!

Все это сработало, но только после того, как я использовал опцию «Чистая сборка».

Дополнительную информацию см. В другой теме о переполнении стека: Использование mergedModelFromBundles: и управление версиями (CoreData)

Справочник по основным данным iPhone содержит довольно приличную статью по этому поводу. Формальный процесс из документации - это «Автоматическая облегченная миграция».

Еще раз спасибо, - Батгар

0
ответ дан 3 December 2019 в 01:15
поделиться

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

Вы всегда можете проверить правильность этого параметра в папке ресурсов продукта сборки внутри импортированного каталога .momd в файле с именем versioninfo.plist - параметр для текущей модели ДОЛЖЕН соответствовать фактическому имени вашей модели.

9
ответ дан 3 December 2019 в 01:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: