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

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

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

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

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

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

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

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

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

  • NSFetchedResultsController vs UILocalizedIndexedCollation
  • «lock» устарел: сначала устарел в iOS 8.0 - Use -performBlockAndWait: вместо этого - iOS coredata warning
  • Как я могу проверить, что хранится в моей базовой базе данных?
  • Определение наличия новых версий в базовой модели данных
  • Core Data - объект обновления в фоновом потоке автоматически изменяет NSManagedObject в главном потоке без слияния - почему?
  • One Solution collect form web for “Резервное копирование основных данных?”

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

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

    Interesting Posts

    Как использовать метод диалога FBConnect для размещения UIImage на моей стене?

    не хотите, чтобы модальный вид поднялся на клавиатуре

    Не удается запустить приложение на устройстве после обновления до xcode 7

    Как определить, загрузило ли устройство iOS голосовой файл?

    Как я могу получить доступ к переменной __block после завершения блока?

    Добавить изображение в панель навигации

    UITextView не обновляет свой контент.

    Как преобразовать координаты CoreLocation в String?

    cell.imageView не показывает изображение

    Запустить экран на Xamarin.iOS не показывается. Вместо этого отображается синий экран

    Основные данные: UIManagedDocument или AppDelegate для установки основного стека данных?

    Ajax https звонит в ios, используя PhoneGap, не работает?

    UIView Content Clipping Not Working / UIView Resize не работает

    nil в методах делегата iOS8 – пользовательские клавиатуры

    iOS – просмотр видеофайлов по кадру, обработка изображений, а затем сохранение в виде нового видеофайла

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.