之前項目中在展示用戶數(shù)據(jù)的時候都是先直接從網(wǎng)絡(luò)獲取,然后再展示,之所以這樣做而不將用戶數(shù)據(jù)存儲到本地再展示的原因是當(dāng)時考慮到如果用戶在其他設(shè)備上對該用戶的數(shù)據(jù)進(jìn)行了修改那么原來設(shè)備上用戶信息的展示就會出錯,還是從網(wǎng)絡(luò)獲取的數(shù)據(jù)可靠。(存儲到本地同樣能正確展示用戶數(shù)據(jù),只怪自己當(dāng)初沒深入思考過這個問題)
創(chuàng)新互聯(lián)建站自2013年創(chuàng)立以來,先為額爾古納等服務(wù)建站,額爾古納等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為額爾古納企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
先從網(wǎng)絡(luò)獲取用戶數(shù)據(jù)再展示用戶數(shù)據(jù)會有一個問題,由于網(wǎng)路請求數(shù)據(jù)是需要一定時間的,這樣當(dāng)我打開一個包含用戶數(shù)據(jù)的頁面的時候會有片刻時間無法看到用戶的數(shù)據(jù),尤其在這個頁面包含用戶頭像的時候這個效果(閃屏)更加明顯,給用戶的體驗不是很好。
我們可以在項目中創(chuàng)建一個存儲用戶信息的類,這個類可以將用戶信息存儲到本地,在展示用戶數(shù)據(jù)的時候 先從本地去取數(shù)據(jù) 這樣就不會有之前片刻時間看不到用戶數(shù)據(jù)的閃屏效果, 再從網(wǎng)絡(luò)上獲取數(shù)據(jù)同時將數(shù)據(jù)存儲到本地,再重復(fù)從本地取的操作(這樣能保證數(shù)據(jù)是最新的,不會出錯) 。
存儲用戶數(shù)據(jù)到本地有三個要點(diǎn)需要注意:
這個存儲用戶數(shù)據(jù)的類相當(dāng)于一個中介,在從網(wǎng)絡(luò)獲取到數(shù)據(jù)時并沒有直接去展示用戶數(shù)據(jù)而是先將數(shù)據(jù)放到了中介中,在展示用戶數(shù)據(jù)的時候再去這個存儲了用戶數(shù)據(jù)的中介中去取數(shù)據(jù)。
本篇文章到這里就結(jié)束了,愿大家加班不多工資多,男同胞都有女朋友,女同胞都有男朋友。????
iOS本地化存儲的數(shù)據(jù)保存在沙盒中。
(1) Documents :iTunes會備份該目錄。一般用來存儲需要持久化的數(shù)據(jù)。
(2) Library/Caches :緩存,iTunes不會備份該目錄。內(nèi)存不足時會被清除,應(yīng)用沒有運(yùn)行時,可能會被清除。一般存儲體積大、不需要備份的非重要數(shù)據(jù)。
(3) Library/Preference :iTunes同會備份該目錄,可以用來存儲一些偏好設(shè)置。
(4) tmp : iTunes不會備份這個目錄,用來保存臨時數(shù)據(jù),應(yīng)用退出時會清除該目錄下的數(shù)據(jù)。
獲取沙盒文件:
其中:
??可以把字典或數(shù)組直接寫入到文件中。另外, NSString 、 NSData 、 NSNumber 等類型,也可以使用 writeToFile:atomically: 方法直接將對象寫入文件中,只是 Type 為空。
?? NSUserDefaults是輕量級存儲,一般使用它來進(jìn)行一些設(shè)置的記錄,比如用戶ID,開關(guān)是否打開等設(shè)置,通過鍵值對的方式記錄設(shè)置,所以這個有時候也被稱為偏好設(shè)置。
??NSUserDefaults可以存儲的數(shù)據(jù)類型包括: NSData 、 NSString 、 NSNumber 、 NSDate 、 NSArray 、 NSDictionary 。如果要存儲其他類型,則需要轉(zhuǎn)換為前面的類型,才能用NSUserDefaults存儲。
也可以寫成宏定義
特點(diǎn):只能存儲OC常用數(shù)據(jù)類型(NSString、NSDictionary、NSArray、NSData、NSNumber等類型)而不能直接存儲自定義模型對象。
定義一個類UserInfoModel,需遵守NSCoding協(xié)議
有時候我們需要查看類似 /private/var/mobile/Containers/Data/Application/... 路徑下的文件,但是如果我們直接使用快捷鍵command+shift+G前往文件夾,發(fā)現(xiàn)找不到。。。
因為我們是要找的是iphone下的文件,可以使用以下方法查看:
如圖1所示,點(diǎn)擊Window→Devices and Simulators:
彈出圖2界面,選中設(shè)備下安裝的該App,然后點(diǎn)擊“齒輪”按鈕,選擇“Download Container...”
簡單的數(shù)據(jù),對安全性要求不高的數(shù)據(jù)可以使用 NSUserDefaults (本質(zhì)上是一個plist)來存儲
相對復(fù)雜點(diǎn)的數(shù)據(jù),可以使用coredata (本質(zhì)上是使用sqlite 來存儲)
對安全性要求較高的數(shù)據(jù),可以使用keychain 來存儲。
一般獲取本地數(shù)據(jù)是從plist文件中讀取JSON數(shù)據(jù)。
讀取數(shù)據(jù):
NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"city" ofType:@"plist"];
NSArrary *cityArray = [[NSArray alloc]initWithContentsOfFile:plistPath];
這里的cityArray根據(jù)你存在plist中的數(shù)據(jù)類型來確定,如果plist中是字典類型,那么你這里需要使用NSDictionary去存儲你從plist中獲取到的數(shù)據(jù)。
至于本地存儲數(shù)據(jù)的話根據(jù)你項目的具體功能來設(shè)計,一般的小型數(shù)據(jù)如用戶昵稱、手機(jī)號等使用NSUserDefault即可,但是如果是大量數(shù)據(jù)如賬單類app中的賬單數(shù)據(jù)那么此時需要考慮使用sqlite3去存儲數(shù)據(jù),至于密碼之類就需要使用NSKeydArchiver去存儲。