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

Имам приложение на живо в магазина за приложения. Той използва съхранение на данни SQLite и грозни методи, които запазват и получават данни от него. Замених модела на данни с основни данни. Така че в момента имам една таблица, която съдържа списък с любими. Предполагам, че потребителят ще загуби своите любими данни и вторият проблем ще бъде, че предишната база данни SQLite ще бъде в приложението.

Какъв е най-добрият начин за мигриране на тези данни в нова база данни. Така че кодът беше грозен, започнах да пиша нов проект. Това означава, че няма да има никаква SQLite база данни, както преди, със същото име, само нова Core Data db. Как обикновено трябва да решим този проблем.

Мисля, че мога да добавя метод в делегата на приложението, който ще проверява дали база данни с име в приложението ще се опитам да извлека всички данни от това хранилище и да ги конвертирам в обектите на основните данни. След това, когато данните бъдат преобразувани успешно, ще премахна тази база данни. Кога ще го направя, ако всичките ми активни потребители ще имат тази актуализация. Ще премахна тази функция от делегата на приложението, защото всички ще бъдат актуални. Има ли смисъл?


person Matrosov Alexander    schedule 13.02.2015    source източник
comment
една и съща ли ще бъде структурата на данните на вашата таблица и връзката в таблиците?   -  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