在學(xué)習(xí)本地?cái)?shù)據(jù)存取的時(shí)候我們首先介紹一下iOS中的一個(gè)存儲(chǔ)介質(zhì)應(yīng)用沙盒褥赊。每個(gè)iOS的應(yīng)用都有自己的應(yīng)用沙盒(應(yīng)用沙盒就是文件系統(tǒng)目錄)糕档,與其他文件系統(tǒng)隔離。應(yīng)用必須待在自己的沙盒里拌喉,其他應(yīng)用不能訪問該沙盒速那。應(yīng)用沙盒結(jié)構(gòu)分析:
1、應(yīng)用程序包:包含所有的資源文件和可執(zhí)行文件
2尿背、Documents:保存應(yīng)用運(yùn)行時(shí)生成需要持久化的數(shù)據(jù)端仰,iTunes同步設(shè)備時(shí)會(huì)備份該目錄。例如:游戲應(yīng)用可將游戲存檔保存在該目錄田藐。
3荔烧、tmp:保存應(yīng)用運(yùn)行時(shí)所需的臨時(shí)數(shù)據(jù)吱七,使用完畢后,再講相應(yīng)的文件從該目錄刪除鹤竭。應(yīng)用沒有運(yùn)行時(shí)踊餐,系統(tǒng)可能會(huì)消除該目錄下的文件,iTunes同步設(shè)備是不會(huì)備份該目錄诺擅。
4市袖、Library/Caches:保存應(yīng)用運(yùn)行時(shí)生成的需要持久化的數(shù)據(jù),iTunes同步設(shè)備時(shí)不會(huì)備份該目錄烁涌。一般存儲(chǔ)體積大苍碟、不需要備份的非重要的數(shù)據(jù)
5、Library/Preference:保存應(yīng)用的偏好設(shè)置撮执,iOS的Setting應(yīng)用會(huì)在該目錄中查找應(yīng)用的設(shè)置信息微峰。iTunes同步設(shè)備時(shí)備份該目錄。
?應(yīng)用的沙盒目錄的常見的獲取方式
?獲取沙盒路徑:NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
iOS應(yīng)用數(shù)據(jù)存儲(chǔ)的常用方式
1抒钱、XML屬性列表(plist)歸檔
2蜓肆、偏好設(shè)置(Preference)
3、NSCoding
4谋币、SQLite3
5仗扬、Core Date
XML屬性列表(plist)歸檔
?屬性列表是一種XML格式,拓展名為plist
?如果對(duì)象是一些OC對(duì)象蕾额,就可以使用wirteToFile:atomically:方法直接將對(duì)象寫到屬性列表文件中,使用這個(gè)方法可以用來獲取文件的沙盒
下面使用歸檔將數(shù)據(jù)寫成plist文件如圖所示:
偏好設(shè)置(Preference)
?很多iOS應(yīng)用都支持偏好設(shè)置早芭,比如登錄保存用戶名、密碼诅蝶,iOS提供了一套標(biāo)準(zhǔn)的解決方案來用用加入偏好設(shè)置功能不能
?每個(gè)應(yīng)用都有NSUserverDefaults實(shí)例退个,通過它來存取偏好設(shè)置
NSCoding(歸檔)
?對(duì)象如果是OC隊(duì)形可以直接使用NSKeyedArchiver進(jìn)行歸檔和恢復(fù)(不是所有的OC對(duì)象都能使用NSKeyedArchiver)
這種方式來進(jìn)行歸檔和接檔操作的只有遵守NSCoding協(xié)議的對(duì)象才可以使用NSKeyedArchiver來進(jìn)行解檔和歸檔