引言:
iOS的數據存儲與緩存涉及到的知識方方面面,有蠻多需要去好好了解了解,那麼做爲移動設備的應用,離線數據的重要性,相對於PC應用顯得重要的多.
文中介紹的方法,不一定都是最好的,但都是目前博主都在使用的技術,如果有更好的方法和技術,不吝賜教!
參考資料:
1:使用Keychain存儲用戶敏感信息
http://blog.csdn.net/tianyitianyi1/article/details/7643365
2:NSUserDefaults簡介及使用
http://qing.blog.sina.com.cn/2739139371/a343f32b33001kpq.html
介紹:
1: KeyChain
KeyChain是用於在iOS中存儲敏感信息時的一個推薦型方案.
如果直接使用其API,還是非常繁瑣的,爲此網上已經有牛人,對此其API進行了封裝,我們學會使用就行了.
兩部操作即可:
第一步:引入系統框架文件 Security.framework
第二步:導入開源框架 SFHFKeychainUtils
參考鏈接中有源代碼下載地址,這裏就不提供了,
那麼我這裏提供一個 我使用過後的一個優化版:Demo
使用非常簡單, 4個方法:添加,刪除,查詢,查詢全部
注:KeyChain的信息存儲不會因爲App的被刪除而丟失數據,這個有點類似Windows的註冊表的概念差不多.
2:Property List (熟稱的Plist)
Property List是在App裏面存儲一些較爲簡單且零散的鍵值對的一個推薦型方法
以下代碼 分別用於創建或修改Property List文件內部值:
- //通過文件路徑獲取
- NSMutableDictionary *attachmentInfoDictionary = [[NSMutableDictionary alloc] initWithContentsOfFile:attachmentInfoPathString];
- //判斷是否成功從指定的路徑中取到Plist 文件,如果沒有,則實例化一個新的供寫入
- if (attachmentInfoDictionary == nil) {
- attachmentInfoDictionary = [[NSMutableDictionary alloc] init];
- }
- [attachmentInfoDictionary setObject:@"值" forKey:@"鍵"];
- NSLog(@"%@",attachmentInfoDictionary);
- //返回是否寫入成功 但是需要確保指定的路徑結構存在,否則肯定失敗
- [attachmentInfoDictionary writeToFile:attachmentInfoPathString atomically:NO];
- [attachmentInfoDictionary release];
3:NSUserDefaults
NSUserDefaults是系統級Property List文件,裏面存儲一些App配置參數,當然,我們也可以加一些自己的值進行,用戶和Property
List幾乎一樣
1:查詢NSUserDefaults 裏面全部存儲的值,這裏面可以看到我們開發時存儲的:
- [[NSUserDefaults standardUserDefaults] dictionaryRepresentation]
2:當對NSUserDefaults 修改的值以後,需要調用同步函數實現數據持久化
- [[NSUserDefaults standardUserDefaults] synchronize];
4:Core Data
Core Data是對SQLite的封裝,以面向對象的方式與本地數據庫進行數據交互
Core Data的介紹參考這篇文章.
5:StackMob
StackMob是專爲移動App打造的後端雲存儲解決方案,是博主大力推薦使用的Baas平臺
StackMob的使用參考這篇文章.
6:SQLite
SQLite 的使用參考FEDM
總結:
信息化離不開數據