Модель, используемая для открытия магазина, несовместима с моделью, используемой для создания магазина. - PullRequest
179 голосов
/ 16 января 2012

Я создал модель базовых данных в xcode 3.2, а после обновления в Xcode 4.2 я добавил новую сущность подкласса NSManagedObject (см. Новую сущность).

Во-первых, это выглядит странно, потому что он не в той же группе, что и старая. Вот изображение на моем xcode 4.2 (AlkitabDB - это то, что я создал в xcode 3.2, EndeDB - новое из текущей версии xcode (4.2):

the new entity do not grouped in xdatamodel

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

Вот ошибка:

2012-01-16 21:13:38.496 iHuria[55953:207] Unresolved error Error Domain=NSCocoaErrorDomain Code=134100 "The operation couldn’t be completed. (Cocoa error 134100.)" UserInfo=0x8829cd0 {metadata=<CFBasicHash 0x882a370 [0x1839b38]>{type = immutable dict, count = 7,
entries =>
    2 : <CFString 0x8829b90 [0x1839b38]>{contents = "NSStoreModelVersionIdentifiers"} = <CFArray 0x8829ff0 [0x1839b38]>{type = immutable, count = 0, values = ()}
    4 : <CFString 0x8829bc0 [0x1839b38]>{contents = "NSPersistenceFrameworkVersion"} = <CFNumber 0x8829770 [0x1839b38]>{value = +320, type = kCFNumberSInt64Type}
    6 : <CFString 0x8829bf0 [0x1839b38]>{contents = "NSStoreModelVersionHashes"} = <CFBasicHash 0x882a080 [0x1839b38]>{type = immutable dict, count = 1,
entries =>
    0 : <CFString 0x882a010 [0x1839b38]>{contents = "AlkitabDB"} = <CFData 0x882a030 [0x1839b38]>{length = 32, capacity = 32, bytes = 0xd02ac5f8be6ab0b39add450aca202ac0 ... 3d45d462998d2ccd}
}

    7 : <CFString 0x10e3aa8 [0x1839b38]>{contents = "NSStoreUUID"} = <CFString 0x8829e60 [0x1839b38]>{contents = "4F2EE7FF-463B-4055-BBED-8E603CDBDF59"}
    8 : <CFString 0x10e3948 [0x1839b38]>{contents = "NSStoreType"} = <CFString 0x10e3958 [0x1839b38]>{contents = "SQLite"}
    9 : <CFString 0x8829c40 [0x1839b38]>{contents = "NSStoreModelVersionHashesVersion"} = <CFNumber 0x6b1c7c0 [0x1839b38]>{value = +3, type = kCFNumberSInt32Type}
    10 : <CFString 0x8829c70 [0x1839b38]>{contents = "_NSAutoVacuumLevel"} = <CFString 0x882a0c0 [0x1839b38]>{contents = "2"}
}
, reason=The model used to open the store is incompatible with the one used to create the store}, {
    metadata =     {
        NSPersistenceFrameworkVersion = 320;
        NSStoreModelVersionHashes =         {
            AlkitabDB = <d02ac5f8 be6ab0b3 9add450a ca202ac0 ebd1e860 cbb578c2 3d45d462 998d2ccd>;
        };
        NSStoreModelVersionHashesVersion = 3;
        NSStoreModelVersionIdentifiers =         (
        );
        NSStoreType = SQLite;
        NSStoreUUID = "4F2EE7FF-463B-4055-BBED-8E603CDBDF59";
        "_NSAutoVacuumLevel" = 2;
    };
    reason = "The model used to open the store is incompatible with the one used to create the store";
}

Ранее я искал решение и обнаружил, что должен удалить приложение из симулятора и повторно запустить приложение, и оно не сработало. Кто-нибудь знает решение этой проблемы? Пожалуйста, помогите.

Ответы [ 25 ]

0 голосов
/ 31 января 2018

Для разработки приложений Mac:

  1. Очистить проект
  2. Очистить производные данные
  3. Перейти к / Users / YOUR_NAME / Библиотека / Контейнеры / YOUR_APP_BUNDLE_ID / Data /Документы / и удалите все файлы внутри (такие как ".sqlite", ".sqlite-shm" ...)

Это сработало для меня, надеюсь, это может быть полезно.

0 голосов
/ 11 апреля 2013

У меня была эта проблема - я сначала сбрасываю симулятор, а затем очищаю проект и перестраиваю.И тогда это работает.

0 голосов
/ 19 ноября 2015

Симулятор iOS -> Сброс содержимого и настроек ...

Работает для меня

Симулятор iOS -> Сброс содержимого и настроек ... -> Сброс работает на iOS9 (xcode 7.1)а также

0 голосов
/ 24 марта 2014

При изменении основных данных (добавление поля в таблицу, удаление поля и т. Д.) Файл sqlite в папке документов приложений должен синхронизироваться с вашей схемой.

Этот файл по умолчанию не перезаписывается, этот файл необходимо восстановить.

Выполните следующие действия:

  1. Перейдите в папку, указанную NSURL. (Этот путь можно найти в сообщении об исключении, сгенерированном приложением перед сбоем.) пример: / Пользователи // Библиотека / Поддержка приложений / iPhone Simulator // Приложения // Документы

  2. удалить или переименовать файл sqlite

  3. Очистить и снова запустить приложение
  4. При повторном запуске приложения будет создан новый файл sqlite.

Это обеспечит синхронизацию схемы и Xcode.

0 голосов
/ 06 июля 2012

Я получаю ошибку, но причина, по которой я ее получаю, заключается в следующем:

Первоначально у меня была одна сущность с именем "Entry", и для этой сущности в базе данных была сохранена одна строка.Затем я добавил еще одну сущность с именем «Person» и после добавления пошел в сборку и получил ошибку.Поэтому я решил проблему, удалив сущность «Персона», а затем собрав приложение, удалив строку, находящуюся в «Записи», а затем закрыл приложение.Затем я полностью удалил приложение с телефона, а затем сделал восстановление, и оно работало нормально.Не уверен, какой шаг исправил проблему (удаление строки или приложения), но, надеюсь, если вы ищете решение, это поможет.:)

Редактировать: Да, и если вы беспокоитесь об удалении вашей новой сущности (в моем случае «Персона») для повторной сборки приложения, помните, что вы можете получить ее позже, используя CMD + Z!

...