Резервное копирование основных данных?

У меня есть приложение с очень большой базой данных Core. За прошедший год я несколько раз это рассказывал.

В последний раз, когда я обновил базу данных, я сделал одно простое изменение для объекта: я добавил новый необязательный атрибут. По какой-то причине он не будет мигрировать с использованием Light-weight Migration. Я узнал намного позже, что это произошло из-за ошибки в коде Light-Weight Migration от Apple в результате «переименования идентификаторов», который мне понадобился в другом варианте.

Во всяком случае, я отвлекаюсь …

Из-за ошибки, которая мешала мне использовать Light-weight migration, я создал файл сопоставления, чтобы помочь с переносом, не понимая, что это будет гораздо более тяжелый процесс и заставит моих пользователей ждать, пока приложение загрузит всю базу данных в памяти при выполнении миграции. Оказывается, это совсем не вариант с очень большими базами данных, и многие из моих пользователей не смогли перенести базу данных вообще из-за проблем с памятью и т. Д.

Итак, теперь я хочу переиздать приложение и прояснить эту проблему. Проблема в том, что некоторые из моих пользователей имеют базу данных, которая как-то помечена как «посередине миграции». Даже с моим новым кодом, который избавляется от файла сопоставления и поддерживает легковесную миграцию, пользователи, находящиеся в этом состоянии, «посередине миграции», похоже, не получают сброс.

Каковы мои варианты для поддержки миграции? – Я могу обнаружить, что я в этом состоянии, потому что в каталоге «Документы» есть файл .myDB.sqlite.migrationdestination_41b5a6b5c6e848c462a8480cd24caef3 '. При удалении этого файла миграция не устраняется. Я предполагаю, что база данных каким-то образом помечена как находящаяся в этом состоянии или уже частично перенесена. – Я могу обнаружить это состояние, а затем удалить базу данных. Но это заставляет моих пользователей повторно загружать свои данные.

Есть предположения?

Спасибо за помощь.

    Единственное, что происходит со мной, – это открыть хранилище SQL поврежденного файла и искать флаги или что-то еще, что может сигнализировать о том, что db находится в переходном состоянии. Возможно, вы сможете написать прямо в файл и изменить что-то.

    Это действительно уродливая проблема.

    Interesting Posts

    Добавление тени к слою приводит к ухудшению внешнего вида сетчатки

    Почему оператор протокола должен быть реализован как глобальная функция?

    Войти без учетной записи facebook с FBSDKLoginBehaviorWeb появится пустая страница

    Swift UIColor initializer – ошибка компилятора только при настройке на iPhone5s

    Я нашел четыре разных способа изменить строку состояния iOS в XCode. Почему так много и в чем отличия?

    Как выполнить тестирование NSCoding?

    Как позволить TextView прокручивать по горизонтали

    RKResponseDescriptor vs RKRouter

    упаковка реалистичного комплекса FFT 2d с использованием vDSP

    Будет ли iOS запускать мое приложение в фоновом режиме, если оно будет принудительно закрыто пользователем?

    как добавить каждый символ NSString в NSArray?

    Swift: Преобразование Foo <String> в Foo <Any>

    Обновление основного объекта данных swift 3

    TTTAttributedLabel не отображает последнюю строку при использовании символов Emoji

    Сообщение об ошибке Airdrop: «невозможно одновременно получать все эти элементы»

    Давайте будем гением компьютера.