plist存儲
1. iOS 中 plist 文件的使用
解釋一下,plist 文件就是 Property List 文件,我們在 Xcode 中新建一個 Project 的時候,在 Project 中可以看到有一個 Info.plist 文件,這種以 .plist 後綴結尾的文件是以 key-value 鍵值對的形式保存數據的。在開發中,我們可以使用這野孝沖些 plist 文件保存一些系統配置、用戶信息等的信息,炒雞方便。
這樣吧,我搞一個 plist 文件,裡面放有一些城市列表數據,然後把它讀取出來。
新建一個 Property List 文件(以下簡頌殲稱 plist 文件),姑且起個名字 Cities.plist
打開 Cities.plist 文件,發現它可以存儲 Array(數組)和 Dictionary(字典)數據
由於城市列表就是個數組,所以我們在 Root 這個 key 中的 Type 選擇 Array,並往裡面添加點城市數據
添加完模擬數據,才發現添加的不是城市數據...算了,當作城市吧
其實 plist 文件本質就是一個 xml 文件
控制台列印:
這樣拿到數據就可以對它進行一些處理了。
好吧,我慎褲只是經常要用到記錄一下而已🌚
2. IOS 存儲方式(PList、NSUserDefaults、歸檔、CoreData、資料庫、文件)
iOS開發,plist文件讀寫那些事 - (jianshu.com)
NSUserDefaults存儲輕量級 的本地數據 ,比如要保存一個登陸界面的數據,用戶名、密碼之類的。
支持的數據類型有 NSString、 NSNumber、NSInteger、NSFloat、BOOL、NSArray、NSDictionary、NSDate、 等系統定義的數據類型。
用NSUserDefaults存儲的數據下次程序運行的時候依然存在 .它的數據存儲在應用程序內置的一個plist文件里, 在/Library/Prefereces沙盒路徑下.
NSUserDefaults是定時把緩存中的數據寫入磁碟的,而不是即時寫入,為了防止在寫完NSUserDefaults後程序退出導致的數據丟失,可以在寫入數據後使用synchronize強制立即將數據寫入磁碟:
使用NSKeyedArchiver 對數據進行 歸檔 反歸檔(將自定義類型轉換為NSData類型:)
NSuserDefaults 的坑
iOS 最終,我還是決定放棄使用NSUserDefaults了 - (jianshu.io)
歸檔: ,就是將數據寫到一個文件裡面去。一般我們的應用的變數常量之類的數據都是在內存裡面的,只要APP關閉,這些數據都會丟失。但是把數據存儲到文件裡面去,就能將數據保存到本地磁碟裡面(目前iOS基本就是在沙盒裡面操作了),不管是APP關閉還是重啟設備,下次啟動APP的時候都能夠讀出來。
解檔: (別人也叫反歸檔),就是將數據從文件裡面讀取出來。在程序裡面使用。
【iOS】數據持久化:使用NSKeyedArchiver進行數據歸檔 - (jianshu.com)
iOS 開發Core Data使用方法 – 技術狗 (jishudog.com)
IOS 開發文件操作——NSFileManager - 星語海藍 - 博客園 (cnblogs.com)
(15條消息) iOS文件操作_你有故事,我囿酒-CSDN博客
參考:
iOS開發 - 關於 NSUserDefaults 的使用 - (jianshu.com)
3. iOS中常用的幾種持久化存儲
1、偏好設置(NSUserDefaults)
2、plist文件存儲
3、歸檔
4、SQLite
5、Core Data
我們首先需要了解下沙盒(Sandbox)
Application :存放程序源文件,上架前經過數字簽名,上架後不可修改
Documents : 保存應⽤運行時生成的需要持久化的數據,iTunes同步設備時會備份該目錄。例如,游戲應用可將游戲存檔保存在該目錄
tmp : 保存應⽤運行時所需的臨時數據,使⽤完畢後再將相應的文件從該目錄刪除。應用 沒有運行時,系統也可能會清除該目錄下的文件。iTunes同步設備時不會備份該目錄。
Library/Caches : 保存應用運行時⽣成的需要持久化的數據,iTunes同步設備時不會備份 該目錄。⼀一般存儲體積大、不需要備份的非重要數據,比如網路數據緩存存儲到Caches下
Library/Preference : 保存應用的所有偏好設置,如iOS的Settings(設置) 應⽤會在該目錄中查找應⽤的設置信息。iTunes同步設備時會備份該目錄
NSUserDefaults是個單例類,用於存儲少量數據。NSUserDefaults實際上對plist文件操作的封裝,更方便我們直接操作,一般用於存儲系統級別的偏好設置。比如我們經常將登錄後的用戶的一些設置通過NSUserDefaults存儲到plist文件中。
NSUserDefaults使用起來非常簡單,例如將用戶的賬號和密碼存儲起來:
4. OC -- 應用數據儲存方式
之前對數據之久化一直都是一知半解,只知道有幾種方法,但不清楚這幾種方法的區別.經過網上的查詢和學習.寫一下自己的心得體會.
數據持久化說白了就是將數據保存到本地的磁碟中.使得在應用程序重啟後可以繼續訪問之前保存的數據.在ios中運用了很多的存儲方式,一般我們用的方式分為以下5中:
沙盒是蘋果的發明的內存管理機制,ios 程序默認情況下只能訪問程序自身的目錄,且這個目錄被稱為"沙盒"
應用程序包: 包含了所有的資源文件和可執行的文件.
Documents :保存應用運行時生成的需要數據持久化的數據,iTunes同步設備時會備份目錄.例如游戲存檔
tmp: 保存應用運行時所需的臨時數據,使用完後就會將相應的文件從該目錄刪除,應用沒有運行時,系統可能也會清除該文件下的數據.iTunes同步設備時,不會備份該目錄.
Library / Caches : 保存應用運行時生成的需要持久化的數據,iTunes同步設備時不會備份該目錄.-----一般存儲體積大.不需要備份的非重要數據.
Library / Preference :保存應用的所有偏好設置,iOS的settings(設置)應用會在改目錄中查找應用的設置信息.iTunes同步設備時會備份該目錄.
雖然沙盒中有這么多文件夾,但是每個文件夾功能都是不相同的在上面我們也描述了,每次文件夾的功能.所以以後在存儲數據的時候要注意存儲的文件.一定要選擇合適的文件夾.
獲取相應文件夾位置的方法.
獲取沙盒根目錄
應用程序包:
Documents:(有兩種獲取方式)
TMP
Library/Caches:
Library/Preference
Plist文件
plist文件是將某些特定的類,通過XML的文件方式保存在目錄中,並且plist 文件是存儲在Documents文件夾下面的.
可以被序列化的類型只有如下幾種:
1獲取文件路徑
2.存儲
3.讀取
4.注意
只有以上列出的類型才能使用plist文件存儲。
存儲時使用writeToFile: atomically:方法。 其中atomically表示是否需要先寫入一個輔助文件,再把輔助文件拷貝到目標文件地址。這是更安全的寫入文件方法,一般都寫YES。
讀取時使用arrayWithContentsOfFile:方法。