2016-12-12 5 views
6

Что касается великолепного и удивительного SQLite.swift, мне интересноiOS SQLite.swift, относительно обновления приложения?

У вас есть приложение в магазине приложений, v7. Есть обновление до версии v8. Пользователь X обновляет v7 до v8 с помощью магазина приложений.

Скажем в v8, мы немного изменили одну из таблиц sql, возможно, добавили столбец или переименовали столбец.

В этом случае должно быть что-то особенное в SQLite.swift?

Какой способ SQLite.swift справиться с этим?

(. В, например, Android есть удобная onUpgrade понятие в их helper class ... который поставляется с собственным набором сложных вопросов)

+0

баунти здесь !!! – Fattie

ответ

6

Реализация SQLiteOpenHelper довольно проста:

 db = SQLiteDatabase.openDatabase(...); 

     onConfigure(db); 

     int version = db.getVersion(); 
     if (version != mNewVersion) { 
      db.beginTransaction(); 
      try { 
       if (version == 0) { 
        onCreate(db); 
       } else { 
        if (version > mNewVersion) { 
         onDowngrade(db, version, mNewVersion); 
        } else { 
         onUpgrade(db, version, mNewVersion); 
        } 
       } 
       db.setVersion(mNewVersion); 
       db.setTransactionSuccessful(); 
      } finally { 
       db.endTransaction(); 
      } 
     } 

Просто сделайте то же самое в Swift.

Для реализации onUpgrade() см. SQLiteOpenHelper onUpgrade() Confusion Android.

+0

Было бы полезно иметь код Swift. – Suragch

+0

Hi CL., (1) спасибо за это (2) Я понимаю принцип (3), обратите внимание, что в этом коде действительно «onUpgrade» - это самое главное (изменить таблицы, но, сохраняя наши данные целыми как можно больше как логически возможно) – Fattie

+0

очень ценная ссылка, которую вы добавили там @CL., thanks – Fattie

Смежные вопросы