iOS 開發(fā)中一般有如下幾種數(shù)據(jù)存儲方式,需要根據(jù)具體的業(yè)務(wù)場景,選擇合適的數(shù)據(jù)存儲方式。
創(chuàng)新互聯(lián)建站是一家集網(wǎng)站建設(shè),夏津企業(yè)網(wǎng)站建設(shè),夏津品牌網(wǎng)站建設(shè),網(wǎng)站定制,夏津網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,夏津網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。
用戶默認設(shè)置 – 這種情況通常不需要用戶干預(yù),如游戲通關(guān)信息,Video播放記錄,退出之后下次進入時恢復(fù)到退出時的情況。
設(shè)置束提供了一個通過 iPhone、iPad的設(shè)置應(yīng)用程序進行配置的接口。
直接訪問文件系統(tǒng)讀寫屬于當前App的iOS文件系統(tǒng)部分的文件。
SQLite 數(shù)據(jù)庫是嵌入式的和輕量級的SQL數(shù)據(jù)庫,SQLite 是由C實現(xiàn)的。
遠端數(shù)據(jù)庫這個一般由App調(diào)用遠端的RESTFulWCF服務(wù),將JSON、XML 數(shù)據(jù)傳遞給遠端的 Web 服務(wù),讀寫數(shù)據(jù)庫的邏輯完全在 Web 服 務(wù)端實現(xiàn)。
一般獲取本地數(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ù)如用戶昵稱、手機號等使用NSUserDefault即可,但是如果是大量數(shù)據(jù)如賬單類app中的賬單數(shù)據(jù)那么此時需要考慮使用sqlite3去存儲數(shù)據(jù),至于密碼之類就需要使用NSKeydArchiver去存儲。
一、 首先簡述一下 Userdefault (介紹使用了該作者的文章)
1.適合存儲輕量級的本地數(shù)據(jù)。
比如用戶id? 用戶的登錄token什么的? 這種比較短小的數(shù)據(jù)
2.NSUserDefaults支持的數(shù)據(jù)格式有:NSNumber、NSData、NSDate、NSString、NSArray、NSDictionary、BOOL。
3.以鍵值對的形式進行存儲。
4.存儲時間為整體應(yīng)用程序的存儲時間,如果想需要刪除,需要刪除整體應(yīng)用程序。
?? 存儲聲明的時候因為是動態(tài)的,先聲明再調(diào)用,聲明存儲的時候不會出現(xiàn)異常提示,但執(zhí)行的時候會出現(xiàn) ? --斷言--(因為存儲對象在這里編譯是nil)
iOS本地化存儲的數(shù)據(jù)保存在沙盒中。
(1) Documents :iTunes會備份該目錄。一般用來存儲需要持久化的數(shù)據(jù)。
(2) Library/Caches :緩存,iTunes不會備份該目錄。內(nèi)存不足時會被清除,應(yīng)用沒有運行時,可能會被清除。一般存儲體積大、不需要備份的非重要數(shù)據(jù)。
(3) Library/Preference :iTunes同會備份該目錄,可以用來存儲一些偏好設(shè)置。
(4) tmp : iTunes不會備份這個目錄,用來保存臨時數(shù)據(jù),應(yīng)用退出時會清除該目錄下的數(shù)據(jù)。
獲取沙盒文件:
其中:
??可以把字典或數(shù)組直接寫入到文件中。另外, NSString 、 NSData 、 NSNumber 等類型,也可以使用 writeToFile:atomically: 方法直接將對象寫入文件中,只是 Type 為空。
?? NSUserDefaults是輕量級存儲,一般使用它來進行一些設(shè)置的記錄,比如用戶ID,開關(guān)是否打開等設(shè)置,通過鍵值對的方式記錄設(shè)置,所以這個有時候也被稱為偏好設(shè)置。
??NSUserDefaults可以存儲的數(shù)據(jù)類型包括: NSData 、 NSString 、 NSNumber 、 NSDate 、 NSArray 、 NSDictionary 。如果要存儲其他類型,則需要轉(zhuǎn)換為前面的類型,才能用NSUserDefaults存儲。
也可以寫成宏定義
之前項目中在展示用戶數(shù)據(jù)的時候都是先直接從網(wǎng)絡(luò)獲取,然后再展示,之所以這樣做而不將用戶數(shù)據(jù)存儲到本地再展示的原因是當時考慮到如果用戶在其他設(shè)備上對該用戶的數(shù)據(jù)進行了修改那么原來設(shè)備上用戶信息的展示就會出錯,還是從網(wǎng)絡(luò)獲取的數(shù)據(jù)可靠。(存儲到本地同樣能正確展示用戶數(shù)據(jù),只怪自己當初沒深入思考過這個問題)
先從網(wǎng)絡(luò)獲取用戶數(shù)據(jù)再展示用戶數(shù)據(jù)會有一個問題,由于網(wǎng)路請求數(shù)據(jù)是需要一定時間的,這樣當我打開一個包含用戶數(shù)據(jù)的頁面的時候會有片刻時間無法看到用戶的數(shù)據(jù),尤其在這個頁面包含用戶頭像的時候這個效果(閃屏)更加明顯,給用戶的體驗不是很好。
我們可以在項目中創(chuàng)建一個存儲用戶信息的類,這個類可以將用戶信息存儲到本地,在展示用戶數(shù)據(jù)的時候 先從本地去取數(shù)據(jù) 這樣就不會有之前片刻時間看不到用戶數(shù)據(jù)的閃屏效果, 再從網(wǎng)絡(luò)上獲取數(shù)據(jù)同時將數(shù)據(jù)存儲到本地,再重復(fù)從本地取的操作(這樣能保證數(shù)據(jù)是最新的,不會出錯) 。
存儲用戶數(shù)據(jù)到本地有三個要點需要注意:
這個存儲用戶數(shù)據(jù)的類相當于一個中介,在從網(wǎng)絡(luò)獲取到數(shù)據(jù)時并沒有直接去展示用戶數(shù)據(jù)而是先將數(shù)據(jù)放到了中介中,在展示用戶數(shù)據(jù)的時候再去這個存儲了用戶數(shù)據(jù)的中介中去取數(shù)據(jù)。
本篇文章到這里就結(jié)束了,愿大家加班不多工資多,男同胞都有女朋友,女同胞都有男朋友。????
新聞標題:ios開發(fā)數(shù)據(jù)存儲,ios 存儲
瀏覽路徑:http://chinadenli.net/article6/dsisgig.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設(shè)、網(wǎng)站維護、建站公司、網(wǎng)站制作、網(wǎng)站收錄、網(wǎng)站營銷
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)