28 資料儲存 plist 偏好設定 歸檔

2021-07-02 20:04:52 字數 3210 閱讀 3017

documents:儲存應用執行時生成的需要持久化的資料,itunes同步裝置時會備份該目錄。例如,遊戲應用可將遊戲存檔儲存在該目錄

tmp:儲存應用執行時所需的臨時資料,使用完畢後再將相應的檔案從該目錄刪除。應用沒有執行時,系統也可能會清除該目錄下的檔案。itunes同步裝置時不會備份該目錄

library/caches:儲存應用執行時生成的需要持久化的資料,itunes同步裝置時不會備份該目錄。一般儲存體積大、不需要備份的非重要資料

library/preference:儲存應用的所有偏好設定,ios的settings(設定)應用會在該目錄中查詢應用的設定資訊。itunes同步裝置時會備份該目錄

1.plist儲存:

寫入:// 獲取應用程式沙河目錄

nsstring *home = nshomedirectory();

// 不建議寫/

// 這種方式寫的會自動增加/

// nsuserdomainmask 在使用者目錄下查詢

// yes 代表使用者目錄的~

// nsdocumentdirectory 查詢documents資料夾

// 建議使用如下方法動態獲取

nsstring *doc = [nssearchpathfordirectoriesindomains(nsdocumentdirectory, nsuserdomainmask, yes) lastobject];

// 拼接檔案路徑

;nsarray *arr = @[@"lnj", @"28"];

[arr writetofile:path atomically:yes];

讀取:nsstring *doc = [nssearchpathfordirectoriesindomains(nsdocumentdirectory, nsuserdomainmask, yes) lastobject];

;// 讀取資料

nsarray *array=[nsarray arraywithcontentsoffile:path];

特點:plist只能儲存系統自帶的一些常規的類, 也就是有writetofile方法的物件才可以使用plist儲存資料:

字串/字典/資料/nsnumber/nsdata ...

自定義的物件不能儲存到plist中

2.偏好設定儲存:

儲存:// 偏好設定是專門用來儲存應用程式的配置資訊的, 一般情況不要再偏好設定中儲存其他資料

// 如果利用系統的偏好設定來儲存資料, 預設就是儲存在preferences資料夾下面的

// 偏好設定會將所有的資料儲存到同乙個檔案中

// 獲取nsuserdefaults物件

nsuserdefaults *defaults = [nsuserdefaults standarduserdefaults];

// 儲存資料(如果設定資料之後沒有同步, 會在將來某一時間點自動將資料儲存到preferences資料夾下面)

[defaults setobject:@"lnj" forkey:@"name"];

[defaults setobject:@"man" forkey:@"gender"];

[defaults setinteger:13 forkey:@"age"];

[defaults setdouble:10.1 forkey:@"height"];

// 讓nsuserdefaults立刻儲存資料

[defaults synchronize];

讀取:// 1.獲取nsuserdefaults

nsuserdefaults *defaults = [nsuserdefaults standarduserdefaults];

// 2.通過nsuserdefaults獲取儲存的資料

nsstring *name = [defaults objectforkey:@"name"];

nsinteger age = [defaults integerforkey:@"age"];

特點:本質就是plist儲存.

3.歸檔:

在自定義物件中實現nscoding協議並實現以下兩個方法:

// 當將乙個自定義物件儲存到檔案的時候就會呼叫該方法

// 在該方法中說明如何儲存自定義物件的屬性

// 也就說在該方法中說清楚儲存自定義物件的哪些屬性

- (void)encodewithcoder:(nscoder *)encoder

// 當從檔案中讀取乙個物件的時候就會呼叫該方法

// 在該方法中說明如何讀取儲存在檔案中的物件

// 也就是說在該方法中說清楚怎麼讀取檔案中的物件

- (id)initwithcoder:(nscoder *)decoder

return

self;

}儲存:

njperson *p = [[njperson alloc] init];

p.name = @"lnj";

p.age = 28;

p.height = 1.76;

// 2.獲取檔案路徑

nsstring *docpath = [nssearchpathfordirectoriesindomains(nsdocumentdirectory, nsuserdomainmask, yes) lastobject];

// 3.將自定義物件儲存到檔案中

[nskeyedarchiver archiverootobject:p tofile:path];

讀取: // 1.獲取檔案路徑

nsstring *docpath = [nssearchpathfordirectoriesindomains(nsdocumentdirectory, nsuserdomainmask, yes) lastobject];

// 2.從檔案中讀取物件

njperson *p = [nskeyedunarchiver unarchiveobjectwithfile:path];

注意點:若是有njstudent繼承njperson,需要這樣做:

- (void)encodewithcoder:(nscoder *)acoder

- (id)initwithcoder:(nscoder *)adecoder

return

self;

}特點:實現自定義物件的歸檔

偏好設定儲存

很多ios應用都支援偏好設定,比如儲存使用者名稱 密碼 字型大小等設定,ios提供了一套標準的解決方案來為應用加入偏好設定功能。每個應用都有個nsuserdefaults例項,通過它來訪問偏好設定比如,儲存使用者名稱 字型大小 是否自動登入1 儲存設定資料 nsuserdefaults defaul...

資料儲存之偏好設定NSUserDefaults

nsuserdefaults做資料儲存也是比較常用,適合輕量級的本地資料儲存,讀取也很方便。一 支援的資料型別如下圖 nsstring nsarray nsdictionary nsdata nsinteger float double bool nsurl 二 使用demo viewcontrol...

偏好設定的儲存

1.理解 a.很多ios應用都支援偏好設定,ios提供了一套標準的解決方案來為應用加入偏好設定功能。b.每個應用都有個nsuserdefaults例項,通過它來訪問偏好設定,比如 儲存使用者名稱 字型大小 是否自動登入等。c.注意 userdefaults設定資料時,不是立即寫入,而是根據時間戳定時...