Ошибка переноса основных данных между NSPersistenceFrameworkVersions 251 и 358 - PullRequest
1 голос
/ 24 сентября 2011

У меня есть то, что кажется ошибкой с Core Data в OS X 10.7.1.

Мое хранилище данных (NSSQLiteStoreType) не переносится автоматически правильно.

Как примечаниеточно такие же модели Core Data используются версией приложения для iOS.

-> Вот что, похоже, и происходит.

До последнего выпуска все работало нормально -

У меня 14 ревизий модели - модель 13 уже довольно долго поставляется без происшествий.

Недавно я обновил свое приложение и добавил новую модель, поэтому мне 14 (этоэто версия, которая теперь используется в приложениях для доставки).

Версия для iOS отлично работает при переходе с модели 13 на 14, так что об этом не нужно беспокоиться.

Так что вместо разговорово версиях OS X позволяет использовать NSPersistenceFrameworkVersions

NSPersistenceFrameworkVersions 251, равный 10.6.8, и NSPersistenceFrameworkVersions 358, равный 10.7.1

Если мы используем аналогичные версии, то есть model 13 версии 251 и миграция на модель 14 версии 251 работает нормально.

то же самое верно, если мы используем модель 13 версии 358 и мигрируем на модель 14 версии 358, она также отлично работает

Вотгде это становится интересным

, если мы переносим модель 13 версии 358 на модель 14 версии 251, она все еще работает нормально

Однако миграция с модели 13 версии 251 на модель 14 версии 358 не не работа

CoreData: ошибка: (1) ошибка ввода-вывода для базы данных на бла.Код ошибки SQLite: 1, «нет такого столбца: FOK_REFLEXIVE»

Опять же, это происходит только при переходе от 10.6.8 (NSPersistenceFrameworkVersions 251) к 10.7.1 (NSPersistenceFrameworkVersions 358), все остальные перестановки работают просто отлично.

Вот параметры, используемые для миграции, которые передаются в addPersistentStoreWithType.

// Allow inferred migration from the original version of the application.
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
                         [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
                         [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];

И последнее: если мы добавим только атрибуты в модель 14, преобразование будет не перерыв.Это только с добавлением сущности, которая заставит его сломаться.

Кто-нибудь еще видит такую ​​проблему.Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 13 марта 2012

Эта ошибка исправлена ​​в iOS 5.1 и OSX 10.7.3

0 голосов
/ 16 октября 2011

Чтобы уточнить, используйте инструмент Unix sqlite3 с путем к файлу базы данных в качестве параметра.Вы можете получить файл базы данных своего приложения, потянув его из панели устройства организатора в разделе Приложения для устройства ... Вы получите пакет.

введите ".headers on" для заголовков таблицы

Найти таблицы (команда .tables) для сущностей со ссылками между объектами

Где Z_1REFERENCEDSETOFOBJECTS - это имя вашей таблицы.

select * from Z_1REFERENCEDSETOFOBJECTS limit 2

для поиска имен заголовков таблицы;затем запустите следующую команду для таблиц, имеющих столбец REFLEXIVE:

ALTER TABLE Z_1REFERENCEDSETOFOBJECTS ADD FOK_REFLEXIVE integer

Нажмите на нее вниз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...