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

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

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

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

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

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

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

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

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

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

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

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

    Interesting Posts

    Доступ к объекту из метода типа класса (+) в iPhone и Cocos2d?

    Swift – удаленные уведомления и поток контроллера навигации

    Как получить автоматически отрегулированный размер шрифта в iOS 7.0 или новее?

    Как подключиться к потоку пользователя в TokBox

    Как сохранить всплывающее меню боковой панели через приложение iOS

    iOS – добавление NSDictinary ключевых значений в NSArray sequencialy

    Динамически удалить нулевое значение из словаря swift, используя функцию

    Изменение цвета задней панели для UIPageViewController

    Избегание дубликатов при получении изображений с помощью PHASset

    Как вы правильно возвращаете структуру, например CLLocationCoordinate2D, из метода класса?

    В App Purchase перестала работать (код ошибки 109)

    Внедрение алгоритма шифрования HMAC в приложении iPhone

    UIScrollView определяет между перетаскиванием и краном

    Восстановление приложений в приложении

    Приложение iOS не заполняет экран iPhone

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