一、ios應用常用的資料存儲方式
1.plist(xml屬性清單歸檔)
2.偏好設定
3.nskeydearchiver歸檔(存儲自定義對象)
4.sqlite3(資料庫,關系型資料庫,不能直接存儲對象,要編寫一些資料庫的語句,将對象拆開存儲)
5.core data(對象型的資料庫,把内部環節屏蔽)
二、應用沙盒
每個ios應用都有⾃己的應⽤沙盒(應用沙盒就是檔案系統目錄),與其他檔案系統隔離。應⽤必須待在⾃己的沙盒裡,其他應用不能通路該沙盒(提示:在ios8中已經開放通路)
應⽤沙盒的檔案系統⽬錄,如下圖所示(假設應用的名稱叫layer)

模拟器應⽤用沙盒的根路徑在: (apple是⽤使用者名, 7.0是模拟器版本) /users/apple/library/application support/iphone simulator/7.0/applications
三、應用沙盒結構分析
應⽤程式包:(上圖中的layer)包含了所有的資源檔案和可執行檔案
documents:儲存應⽤運作時生成的需要持久化的資料,itunes同步裝置時會備份該目錄。例如,遊戲應用可将遊戲存檔儲存在該目錄
tmp:儲存應⽤運作時所需的臨時資料,使⽤完畢後再将相應的檔案從該目錄删除。應用沒有運作時,系統也可能會清除該目錄下的檔案。itunes同步裝置時 不會備份該目錄
library/caches:儲存應用運作時⽣成的需要持久化的資料,itunes同步裝置時不會備份該目錄。⼀一般存儲體積大、不需要備份的非重要資料
library/preference:儲存應用的所有偏好設定,ios的settings(設定) 應⽤會在該⺫錄中查找應⽤的設定資訊。itunes同步裝置時會備份該目錄
四、應用沙盒常見的擷取方式
● 沙盒根目錄:nsstring *home = nshomedirectory(); ● documents:(2種⽅方式)
● 利用沙盒根目錄拼接”documents”字元串
nsstring *home = nshomedirectory();
nsstring *documents = [home stringbyappendingpathcomponent:@"documents"]; // 不建議采用,因為新版本的作業系統可能會修改目錄名
● 利⽤nssearchpathfordirectoriesindomains函數
// nsuserdomainmask 代表從使用者檔案夾下找
// yes 代表展開路徑中的波浪字元“~”
nsarray *array = nssearchpathfordirectoriesindomains(nsdocumentdirectory, nsuserdomainmask, no); //在ios中,隻有一個目錄跟傳入的參數比對,是以這個集合裡面隻有一個元素
nsstring *documents = [array objectatindex:0];
● tmp:nsstring *tmp = nstemporarydirectory();
● library/caches:(跟documents類似的2種⽅方法)
● 利用沙盒根目錄拼接”caches”字元串
● 利⽤nssearchpathfordirectoriesindomains函數(将函數的第2個參數改 為:nscachesdirectory即可)
● library/preference:通過nsuserdefaults類存取該目錄下的設定資訊
相應的代碼:
五、屬性清單
● 屬性清單是一種xml格式的檔案,拓展名為plist
● 如果對象是nsstring、nsdictionary、nsarray、nsdata、 nsnumber等類型,就可以使用writetofile:atomically:⽅法 直接将對象寫到屬性清單檔案中