- NSUserDefaults
- plist
- keychain(鑰匙串)
- 歸檔
- 沙盒
-
數(shù)據庫
image.png
1.NSUserDefaults
NSUserDefaults用于存儲用戶的偏好設置和用戶信息,如用戶名,是否自動登錄,字體大小等.
數(shù)據自動保存在沙盒的Libarary/Preferences目錄下.
NSUserDefaults將輸入的數(shù)據儲存在.plist格式的文件下,這種存儲方式就決定了它的安全性幾乎為0,所以不建議存儲一些敏感信息如:用戶密碼,token,加密私鑰等!
它能存儲的數(shù)據類型為:NSNumber(NSInteger、float哀军、double)沉眶,NSString,NSDate排苍,NSArray沦寂,NSDictionary,BOOL.
不支持自定義對象的存儲.
使用注意點:
- NSUserDefaults存儲的數(shù)據都是不可變的,想將可變數(shù)據存入需要先轉為不可變才可以存儲.
- NSUserDefaults是定時把緩存中的數(shù)據寫入磁盤的淘衙,而不是即時寫入传藏,為了防止在寫完NSUserDefaults后程序退出導致的數(shù)據丟失,可以在寫入數(shù)據后使用synchronize強制立即將數(shù)據寫入磁盤.
2.plist
即屬性列表文件彤守,全名是Property List毯侦,這種文件的擴展名為.plist,因此具垫,通常被叫做plist文件侈离。它是一種用來存儲串行化后的對象的文件,用于存儲程序中經常用到且數(shù)據量小而不經常改動的數(shù)據筝蚕。
可以存儲的類型:NSNumber卦碾,NSString,NSDate起宽,NSData ,NSArray洲胖,NSDictionary,BOOL.
不支持自定義對象的存儲.
使用注意點:
如果需要存儲自定義類型的數(shù)據需要先進行序列化!
3.Keychain(鑰匙串)
用于本地重要數(shù)據的存儲,將數(shù)據加密后存儲在本地更安全.如:密碼,秘鑰,序列號等.當你刪除APP后Keychain存儲的數(shù)據不會刪除坯沪,所以在重裝App后绿映,Keychain里的數(shù)據還能使用。從ios 3.0開始腐晾,跨程序分享keychain變得可行而NSUserDefaults存儲的數(shù)據會隨著APP而刪掉.
使用keychain時蘋果官方已經為我們封裝好了文件KeychainItemWrapper,引入即可使用.當然也可是使用其他優(yōu)秀的第三方的封裝,比如ssKeychain叉弦。
4.歸檔(NSKeyedArchiver)
歸檔是iOS開發(fā)中數(shù)據存儲常用的技巧,歸檔可以直接將對象儲存成文件藻糖,把文件讀取成對象淹冰。
相對于plist或者userdefault形式,歸檔可以存儲的數(shù)據類型更加多樣巨柒,并且可以存取自定義對象樱拴。對象歸檔的文件是保密的凝颇,在磁盤上無法查看文件中的內容,更加安全疹鳄。
遵守NSCoding協(xié)議,并實現(xiàn)該協(xié)議中的兩個方法芦岂。如果是繼承瘪弓,則子類一定要重寫那兩個方法。因為子類在存取的時候禽最,會去子類中去找調用的方法腺怯,沒找到那么它就去父類中找,所以最后保存和讀取的時候新增加的屬性會被忽略川无。需要先調用父類的方法呛占,先初始化父類的,再初始化子類的懦趋。
保存數(shù)據的文件的后綴名可以隨意命名晾虑。
存儲類型 | 安全性 | 文件名后綴 | 數(shù)據量大小 | 應用場景) |
---|---|---|---|---|
NSUserDefaults | 不安全 | plist | 小 | 用戶偏好設置,用戶名 |
plist | 不安全 | plist | 小 | 不經常改動 |
keychain | 安全 | 小 | 密碼仅叫、秘鑰帜篇、序列號 | |
歸檔 | 安全 | 任意 | 大 | 緩存 |
5.沙盒
持久化在Document目錄下,一般存儲非機密數(shù)據诫咱。當App中涉及到電子書閱讀笙隙、聽音樂、看視頻坎缭、刷圖片列表等時竟痰,推薦使用沙盒存儲。因為這可以極大的節(jié)約用戶流量掏呼,而且也增強了app的體驗效果.
Application:存放程序源文件坏快,上架前經過數(shù)字簽名,上架后不可修改哄尔。
Documents: 保存應運行時生成的需要持久化的數(shù)據,iTunes同步設備時會備份該目錄假消。例如,游戲應用可將游戲存檔保存在該目錄。
tmp: 保存應運行時所需的臨時數(shù)據,使?完畢后再將相應的文件從該目錄刪除岭接。應用沒有運行時,系統(tǒng)也可能會清除該目錄下的文件富拗。iTunes同步設備時不會備份該目錄。
Library/Caches: 保存應用運行時生成的需要持久化的數(shù)據,iTunes同步設備時不會備份該目錄鸣戴。一般存儲體積大啃沪、不需要備份的非重要數(shù)據,比如網絡數(shù)據緩存存儲到Caches下窄锅。
Library/Preference: 保存應用的所有偏好設置创千,如iOS的Settings(設置) 應會在該目錄中查找應?的設置信息缰雇。iTunes同步設備時會備份該目錄。
6.數(shù)據庫
存儲數(shù)據量較大的數(shù)據追驴,一般使用數(shù)據庫來存儲械哟。如:FMDB、CoreData殿雪、Realm暇咆、WCDB。