【移動應(yīng)用開發(fā)技術(shù)】IOS 數(shù)據(jù)存儲詳解及實(shí)例代碼_第1頁
【移動應(yīng)用開發(fā)技術(shù)】IOS 數(shù)據(jù)存儲詳解及實(shí)例代碼_第2頁
【移動應(yīng)用開發(fā)技術(shù)】IOS 數(shù)據(jù)存儲詳解及實(shí)例代碼_第3頁
【移動應(yīng)用開發(fā)技術(shù)】IOS 數(shù)據(jù)存儲詳解及實(shí)例代碼_第4頁
【移動應(yīng)用開發(fā)技術(shù)】IOS 數(shù)據(jù)存儲詳解及實(shí)例代碼_第5頁
免費(fèi)預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

【移動應(yīng)用開發(fā)技術(shù)】IOS數(shù)據(jù)存儲詳解及實(shí)例代碼

iOS應(yīng)用數(shù)據(jù)存儲的常用方式1.XML屬性列表(plist)歸檔每個iOS應(yīng)用都有自己的應(yīng)用沙盒(應(yīng)用沙盒就是文件系統(tǒng)目錄),與其他文件系統(tǒng)隔離。應(yīng)用必須待在自己的沙盒里,其他應(yīng)用不能訪問該沙盒。應(yīng)用沙盒結(jié)構(gòu)分析:應(yīng)用程序包:包含了所有的資源文件和可執(zhí)行文件

Documents:保存應(yīng)用運(yùn)行時生成的需要持久化的數(shù)據(jù),iTunes同步設(shè)備時會備份該目錄。例如,游戲應(yīng)用可將游戲存檔保存在該目錄tmp:保存應(yīng)用運(yùn)行時所需的臨時數(shù)據(jù),使用完畢后再將相應(yīng)的文件從該目錄刪除。應(yīng)用沒有運(yùn)行時,系統(tǒng)也可能會清除該目錄下的文件。iTunes同步設(shè)備時不會備份該目錄Library/Caches:保存應(yīng)用運(yùn)行時生成的需要持久化的數(shù)據(jù),iTunes同步設(shè)備時不會備份該目錄。一般存儲體積大、不需要備份的非重要數(shù)據(jù)Library/Preference:保存應(yīng)用的所有偏好設(shè)置,iOS的Settings(設(shè)置)應(yīng)用會在該目錄中查找應(yīng)用的設(shè)置信息。iTunes同步設(shè)備時會備份該目錄應(yīng)用沙盒目錄的常見獲取方式屬性列表

屬性列表是一種XML格式的文件,拓展名為plist

如果對象是NSString、NSDictionary、NSArray、NSData、NSNumber等類型,就可以使用writeToFile:atomically:方法直接將對象寫到屬性列表文件中

屬性列表是一種XML格式的文件,拓展名為plist如果對象是NSString、NSDictionary、NSArray、NSData、NSNumber等類型,就可以使用writeToFile:atomically:方法直接將對象寫到屬性列表文件中如:將一個NSDictionary對象歸檔到一個plist屬性列表中恢復(fù)NSDictionary

**NSDictionary—(writeToFile:atomically:)—->save.plist

(屬性列表文件)**

save.plist(屬性列表文件)—(dictionaryWithContentsOfFile:)—>NSDictionary

**NSDictionary—(writeToFile:atomically:)—->save.plist

(屬性列表文件)**save.plist(屬性列表文件)—(dictionaryWithContentsOfFile:)—>NSDictionary2.Preference(偏好設(shè)置)

很多iOS應(yīng)用都支持偏好設(shè)置,比如保存用戶名、密碼、字體大小等設(shè)置,iOS提供了一套標(biāo)準(zhǔn)的解決方案來為應(yīng)用加入偏好設(shè)置功能

每個應(yīng)用都有個NSUserDefaults實(shí)例,通過它來存取偏好設(shè)置

很多iOS應(yīng)用都支持偏好設(shè)置,比如保存用戶名、密碼、字體大小等設(shè)置,iOS提供了一套標(biāo)準(zhǔn)的解決方案來為應(yīng)用加入偏好設(shè)置功能

每個應(yīng)用都有個NSUserDefaults實(shí)例,通過它來存取偏好設(shè)置

注意:UserDefaults設(shè)置數(shù)據(jù)時,不是立即寫入,而是根據(jù)時間戳定時地把緩存中的數(shù)據(jù)寫入本地磁盤。所以調(diào)用了set方法之后數(shù)據(jù)有可能還沒有寫入磁盤應(yīng)用程序就終止了。出現(xiàn)以上問題,可以通過調(diào)用synchornize方法強(qiáng)制寫入

[defaultssynchornize];

注意:UserDefaults設(shè)置數(shù)據(jù)時,不是立即寫入,而是根據(jù)時間戳定時地把緩存中的數(shù)據(jù)寫入本地磁盤。所以調(diào)用了set方法之后數(shù)據(jù)有可能還沒有寫入磁盤應(yīng)用程序就終止了。出現(xiàn)以上問題,可以通過調(diào)用synchornize方法強(qiáng)制寫入

[defaultssynchornize];3.NSKeyedArchiver歸檔(NSCoding)NSKeyedArchiver

如果對象是NSString、NSDictionary、NSArray、NSData、NSNumber等類型,可以直接用NSKeyedArchiver進(jìn)行歸檔和恢復(fù)

不是所有的對象都可以直接用這種方法進(jìn)行歸檔,只有遵守了NSCoding協(xié)議的對象才可以

如果對象是NSString、NSDictionary、NSArray、NSData、NSNumber等類型,可以直接用NSKeyedArchiver進(jìn)行歸檔和恢復(fù)

不是所有的對象都可以直接用這種方法進(jìn)行歸檔,只有遵守了NSCoding協(xié)議的對象才可以*NSCoding協(xié)議有2個方法:*encodeWithCoder:

每次歸檔對象時,都會調(diào)用這個方法。一般在這個方法里面指定如何歸檔對象中的每個實(shí)例變量,可以使用encodeObject:forKey:方法歸檔實(shí)例變量initWithCoder:

每次從文件中恢復(fù)(解碼)對象時,都會調(diào)用這個方法。一般在這個方法里面指定如何解碼文件中的數(shù)據(jù)為對象的實(shí)例變量,可以使用decodeObject:forKey方法解碼實(shí)例變量歸檔一個NSArray對象到Documents/array.data恢復(fù)(解碼)NSArray對象

NSArray—(archiveRootObject:toFile:)—->array.data

array.data—(unarchiveObjectWithFile:)—>NSArray

NSArray—(archiveRootObject:toFile:)—->array.dataarray.data—(unarchiveObjectWithFile:)—>NSArray

如果父類也遵守了NSCoding協(xié)議,請注意:

應(yīng)該在encodeWithCoder:方法中加上

[superencodeWithCode:encode];

確保繼承的實(shí)例變量也能被編碼,

即也能被歸檔應(yīng)該在initWithCoder:方法中加上

self=[superinitWithCoder:decoder];

確保繼承的實(shí)例變量也能被解碼,即也能被恢復(fù)

如果父類也遵守了NSCoding協(xié)議,請注意:

應(yīng)該在encodeWithCoder:方法中加上

[superencodeWithCode:encode];

確保繼承的實(shí)例變量也能被編碼,

即也能被歸檔應(yīng)該在initWithCoder:方法中加上

self=[superinitWithCoder:decoder];

確保繼承的實(shí)例變量也能被解碼,即也能被恢復(fù)NSData

使用archiveRootObject:toFile:方法可以將一個對象直接寫入到一個文件中,但有時候可能想將多個對象寫入到同一個文件中,那么就要使用NSData來進(jìn)行歸檔對象

NSData可以為一些數(shù)據(jù)提供臨時存儲空間,以便隨后寫入文件,或者存放從磁盤讀取的文件內(nèi)容??梢允褂肹NSMutableDatadata]創(chuàng)建可變數(shù)據(jù)空間

使用archiveRootObject:toFile:方法可以將一個對象直接寫入到一個文件中,但有時候可能想將多個對象寫入到同一個文件中,那么就要使用NSData來進(jìn)行歸檔對象NSData可以為一些數(shù)據(jù)提供臨時存儲空間,以便隨后寫入文件,或者存放從磁盤讀取的文件內(nèi)容??梢允褂肹NSMutableDatadata]創(chuàng)建可變數(shù)據(jù)空間利用歸檔實(shí)現(xiàn)深復(fù)制

person1—(archivedDataWithRootObject:)—>NSData—(unarchiveObje

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論