*** 前提:sqlite較復雜的情況是沙盒中已經(jīng)存在了sqlite文件,再進行sqlite升級付秕,下文按照此種情況描述,sqlite升級寫的有點繞,希望下面簡單的思路對你有幫助莺奔! ***
方式一:文件名稱排序比較 方式
思路:App版本號與sqlite版本NSUserDefaults字段(或與sqlite信息)
進行對比判斷。較適合sqlite升級非常頻繁的時候 `
-
1.1 獲取當前的App版本號 與 sqlite版本字段(或與sqlite信息)
-
1.2 按照如下規(guī)則進行sql迭代升級文件編輯
約定版本號時变泄,如某一段中有多位數(shù)令哟,需要用"0"補齊,如:2.3.05,最后一段"5"前需要補"0"(出現(xiàn):2.2.3妨蛹,2.3.10屏富,需改成:2.2.03,2.3.10)
-
1.3 此次迭代后的App版本
在code中需要將原始版本號"2.1.20170510"轉換為sql文件名格式"2_1_20170510"
-
1.4 篩選出需要迭代升級的sql文件
-
1.5 根據(jù)定義的符號分割sql語句蛙卤,使用"事務"去更新sqlite
為了突出重點狠半,這里偷了個懶,使用的是FMDB的事務API實現(xiàn)颤难,按文件為單位更新sqlite神年,如果中間出現(xiàn)一條sql錯誤,將此文件所有的更新sql進行回滾
-
1.6 更新完成 將App版本號寫入本地sqlite對應NSUserDefaults字段中
此處用的是NSUserDefaults方式存儲行嗤,更新成功后:本地的sqlite對應的版本字段 === App當前版本
方式二:switch-break 方式
*** 不同的核心代碼如下圖已日,為了清晰明了,code沒有進行封裝 ***
思路:更新當前版本號開始升級栅屏,從低往高升飘千。較適合sqlite升級不頻繁的時候