iOS數據持久化存儲-CoreData

1.App沙盒相關類型文件

sqlite:數據庫文件,存儲數據
sqlite-shm,sqlite-wal是iOS7之後系統會默認開啓一個新的“數據庫日誌記錄模式”(database journaling mode)生成的。在調試的時候,我們需要即時的觀察數據庫的變化,我們就可以先禁用這個日誌記錄模式,只需要在建立持久化存儲區的時候存入一個options參數即可。

NSDictionary *options = @{NSSQLitePragmasOption: @{@"journal_mode": @"DELETE"}};

sqlite-shm:共享內存(Shared Memory)文件,該文件裏面會包含一份sqlite-wal文件的索引,系統會自動生成shm文件,刪除它,下次運行還會自動生成
sqlite-wal:預寫式日誌(Write-Ahead Log)文件,這個文件裏面會包含尚未提交的數據庫事務,所以看見有這個文件了,就代表數據庫裏面還有沒處理完的事務需要提交,所以說如果有sqlite-wal文件,再去打開sqlite文件,很可能最近一次數據庫操作還沒有執行

2.表的字段

  • Z_PK:是表的主鍵,從1開始遞增,唯一值。
  • Z_ENT:表在xcdatamodel中的索引值,創建了5個表,Z_ENT的區間就是[1,5]。
  • Z_OPT:表示的是每條數據被操作的次數,初始化值爲1,只要是增刪改查都會加1。

3.輕量級遷移

只需要在建立持久化存儲區的時候存入一個options參數即可。

NSDictionary *options = @{NSSQLitePragmasOption: @{@"journal_mode": @"DELETE"},
                              NSMigratePersistentStoresAutomaticallyOption :@YES,
                              NSInferMappingModelAutomaticallyOption:@YES
                              };

輕量級的遷移:
實體:可以新增實體,可以刪除實體,實體名字修改(需將重命名後實體的Renaming ID,設置爲之前的實體名)。
實體字段:修改實體的字段(否則舊字段對應的數據會被清除,其它的字段數據不受影響,)。

  • 爲Entity簡單的添加一個屬性
  • 爲Entity移除一個屬性
  • 屬性值由 Optional Non-optional 之間轉換
  • 爲屬性設置 Default Value
  • 重命名Entity或者Attribute
  • 增加一個新的relationship 或者刪除一個已經存在的 relationship
  • 重命名relationship
  • 改變relationship to-one to-many 等
  • 增加,刪除Entities
  • 增加新的 Parent 或者 Child Entity
  • 從Hierarchy中移除Entities
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章