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