iOS 4種講數據持久存儲到iOS文件的系統機制:數據庫
- 屬性列表(NSUserDefaults、plist文件)
- 對象歸檔(NSCoding)
- iOS嵌入式關係數據庫(SQLite3)
- 蘋果提供的持久化工具(Core Data)
說道數據持久化都涉及到一個共同的要素。既然是把數據持久存儲到iOS文件系統中,那麼久涉及到了應用沙盒。緩存
能夠嘗試使用Xcode創建一個空的應用,而後打開應用目錄能夠查看到有如下文件網絡
一、Documents
①存放內容
咱們能夠將應用程序的數據文件保存在該目錄下。不過這些數據類型僅限於不可再生的數據,可再生的數據文件應該存放在Library/Cache目錄下。
②是否會被iTunes同步
是
二、Documents/Inbox
①存放內容
該目錄用來保存由外部應用請求當前應用程序打開的文件。
好比咱們的應用叫A,向系統註冊了幾種可打開的文件格式,B應用有一個A支持的格式的文件F,而且申請調用A打開F。因爲F當前是在B應用的沙盒中,咱們知道,沙盒機制是不容許A訪問B沙盒中的文件,所以蘋果的解決方案是講F拷貝一份到A應用的Documents/Inbox目錄下,再讓A打開F。
②是否會被iTunes同步
是
三、Library
①存放內容
蘋果建議用來存放默認設置或其它狀態信息。
②是否會被iTunes同步
是,可是要除了Caches子目錄外
四、Library/Caches
①存放內容
主要是緩存文件,用戶使用過程當中緩存均可以保存在這個目錄中。前面說過,Documents目錄用於保存不可再生的文件,那麼這個目錄就用於保存那些可再生的文件,好比網絡請求的數據。鑑於此,應用程序一般還須要負責刪除這些文件。
②是否會被iTunes同步
否。
五、Library/Preferences
①存放內容
應用程序的偏好設置文件。咱們使用NSUserDefaults寫的設置數據都會保存到該目錄下的一個plist文件中,這就是所謂的寫道plist中!
②是否會被iTunes同步
是
六、tmp
①存放內容
各類臨時文件,保存應用再次啓動時不須要的文件。並且,當應用再也不須要這些文件時應該主動將其刪除,由於該目錄下的東西隨時有可能被系統清理掉,目前已知的一種可能清理的緣由是系統磁盤存儲空間不足的時候。
②是否會被iTunes同步
否
//沙盒目錄
NSHomeDirectory();
//tmp文件路徑
NSTemporaryDirectory();
//Document
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *path = [paths objectAtIndex:0];