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

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

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

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

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

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

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

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

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

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

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

    Interesting Posts

    Использование iPhone в качестве передатчика iBeacon

    спросить у пользователя разрешение показывать предупреждение при запуске локального уведомления

    Являются ли фоновые задачи решением этой проблемы?

    setStatusBarHidden устарел, но работает только то, что работает

    Подождите, пока все сетевые запросы будут выполнены, включая их блоки завершения

    MapView не запрашивает разрешения на размещение

    NSURL isFileURL всегда возвращает NO

    Разбор JSON с использованием новых Swift 3 и Alamofire

    Размер кадра MKAnnotationView не будет обновлять MapView до тех пор, пока масштаб

    Как ясно видеть конкретный вид среди множества перекрывающихся UIViews

    Игровой центр приветствует баннер, не скрывающий строку состояния

    Pod от github не работает

    Как работать с строкой ввода пользователя, которая при ошибке вставки в Xcode дает ошибку «unprintable ascii character found in source file»?

    Внедрение карты Google с помощью UItableviewCell

    Swift получает характеристическое значение в десятичном значении

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