Миграция базы данных SQLite в Core Data с обновлением активной версии в App Store

У меня есть живое приложение в магазине приложений. Он использует хранилище данных SQLite и уродливые методы, которые сохраняют и получают данные из него. Я заменил модель данных основными данными. Итак, сейчас у меня есть одна таблица, содержащая список избранного. Я предполагаю, что пользователь потеряет свои данные о избранном, а вторая проблема будет заключаться в том, что предыдущая база данных SQLite будет в приложении.

Каков наилучший способ перенести эти данные в новую базу данных. Так что код был уродливым, я начал писать новый проект. Это означает, что не будет базы данных SQLite, как раньше, с тем же именем, а будет только новая база данных Core Data db. Как обычно нам нужно решить эту проблему.

Я думаю, что могу добавить метод в делегат приложения, который будет проверять, будет ли база данных с именем в приложении пытаться извлечь все данные из этого хранилища и преобразовать их в объекты Core Data. Затем, когда данные будут успешно преобразованы, я удалю эту базу данных. Когда я буду, если все мои активные пользователи будут иметь это обновление. Я удалю эту функцию из делегата приложения, потому что все будет обновлено. Имеет ли это смысл?


person Matrosov Alexander    schedule 13.02.2015    source источник
comment
будет ли ваша таблица dataStructure и отношения в таблицах одинаковыми или разными?   -  person Shashi3456643    schedule 13.02.2015
comment
@ Shashi3456643, к счастью, отношений нет, но я думаю, что структура модели данных будет такой же. Но в этом случае я буду использовать объект для списка избранного. Я даже сделал некоторые, возможно, не очень хорошие вещи, поэтому мой любимый объект имеет значение NSMutableDictionary, которое содержит всю информацию о записи. Для текущей небольшой структуры это нормально.   -  person Matrosov Alexander    schedule 13.02.2015


Ответы (1)


Ваш подход правильный. В новой версии приложения проверьте, есть ли актуальное постоянное хранилище Core Data, если нет, прочитайте старые данные, скопируйте их в Core Data, удалите старый файл sqlite.

Вы можете оставить этот код там на долгое время — он просто не запустится, если уже есть действующая установка Core Data.

person Mundi    schedule 13.02.2015