iOS 應用資料儲存的常用方式

2021-07-22 16:10:15 字數 3354 閱讀 5282

os 開發中,經常會有將資料儲存到本地的需求。比如一些資料的快取,或者記錄下使用者的賬號密碼,記錄下下次是否自動登入等,這些都需要將資料記錄到本地。ios中,資料儲存到本地的常見方式有三種:

一: 使用plist 儲存到本地;

二:preference(偏好設定)

三:歸檔解檔。

舉例介紹一下三種方式。

方式一:

使用plist將資料儲存到本地,實際上就是將資料寫到乙個檔案中,檔案中的資料是以xml格式儲存。使用plist儲存資料非常方便,**如下:

//

獲得沙盒路徑

nsstring *home =nshomedirectory();

nslog(

@"home = %@

",home);

documents"];

//檔案路徑

data.plist"];

nsarray *data = @[@"

test

",@10,@"

lalala"];

[data writetofile:filepath atomically:yes];

從plist檔案中讀取所儲存的資料**如下:

//

獲得沙盒路徑

nsstring *home =nshomedirectory();

documents"];

//檔案路徑

data.plist"];

nsarray *data =[nsarray arraywithcontentsoffile:filepath];

nslog(

@"%@

",data);

需要有一點注意的是:使用plist儲存資料,僅適用於foundation框架中自帶的一些類,比如 nsstring\nsarray\nsdictionary等。儲存資料時,通過呼叫物件的writetofile 方法寫檔案,讀取資料時,通過呼叫物件的 ...withcontentsoffile 方法讀取檔案內容。

方式二:

偏好設定的本質實際上仍然是以plist的方式儲存資料。

偏好設定儲存資料**:

//

利用nsuserdefaults,就能直接訪問軟體的偏好設定(library/preferences)

nsuserdefaults *defaults =[nsuserdefaults standarduserdefaults];

[defaults setobject:

@"test

" forkey:@"

account"];

[defaults setobject:

@"121

" forkey:@"

password"];

[defaults setinteger:

10 forkey:@"

age"

]; [defaults setbool:yes forkey:

@"rember"];

//立刻同步,將記憶體資訊同步到檔案中

[defaults synchronize];

偏好設定讀取資料**:

nsuserdefaults *defaults =[nsuserdefaults standarduserdefaults];

nsstring *account = [defaults objectforkey:@"

account"];

nsinteger age = [defaults integerforkey:@"

age"

]; bool rember = [defaults boolforkey:@"

rember"];

nslog(

@"%@ %ld %d

",account,age,rember);

通過**可以看出,偏好設定和plist的區別是,使用偏好設定儲存資料,不需要獲取目錄和檔名。實際上,使用偏好設定儲存資料時,不能夠新建檔案,只能儲存到乙個固定的檔案中。

另外,因為偏好設定的本質仍然是plist儲存,因此還是只能儲存foundation框架中自帶的類,還是有一定的侷限性。

方式三:

歸檔解檔。

該方式能夠將任何遵守了 nscoding 協議的物件寫入到檔案中,且寫入到檔案中的資料是亂碼,有一定的加密效果。

實現nscoding協議,需要實現 - (void)encoderwithcoder:(nscoder *)encoder  和 - (id)initwithcoder:(nscoder *)decoder 兩個方法。

示例如下:

/*

* * 將某個物件寫入檔案時會呼叫

* 在這個方法中說清楚哪些屬性需要儲存 */

- (void)encodewithcoder:(nscoder *)encoder

/*

* * 從檔案中讀取某個物件時呼叫

* 在這個方法中說清楚屬性應該如何獲取 */

- (id)initwithcoder:(nscoder *)decoder

return

self;

}

對乙個模型物件歸檔的**:

persion *person =[[persion alloc] init];

person.name = @"

test";

person.age = 15

; person.height = 1.70

;

//歸檔模型物件

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

person.data"];

[nskeyedarchiver archiverootobject:person tofile:filepath];

解檔乙個模型物件的方法:

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

person.data"];

persion *person =[nskeyedunarchiver unarchiveobjectwithfile:filepath];

nslog(

@"%@ %d %f

",person.name,person.age,person.height);

iOS應用資料的儲存的常用方式

1.xml屬性列表 plist 歸檔 2.preference 偏好設定 本質還是通過 plist 檔案來儲存資料,但是使用更簡單 無需關注檔案.資料夾路徑和名稱 3.nskeyedarchiver歸檔 nscoding 把任何物件,直接儲存為檔案的方式.4.sqlite3 當非常大量的資料儲存時使...

ios 資料儲存方式

今天發現一篇好文章,忍不住收藏下來 所謂的持久化,就是將資料儲存到硬碟中,使得在應用程式或機器重啟後可以繼續訪問之前儲存的資料。在ios開發中,有很多資料持久化的方案,接下來我將嘗試著介紹一下5種方案 在介紹各種儲存方法之前,有必要說明以下沙盒機制。ios程式預設情況下只能訪問程式自己的目錄,這個目...

iOS本地資料儲存的方式

1 nskeyedarchiver 歸檔 採用歸檔的形式來儲存資料,可以實現對複雜物件的資料儲存,該資料物件需要遵守nscoding協議,並且該物件對應的類必須提供encodewithcoder 和initwithcoder 方法.2 nsuserdefaults 用來儲存應用程式設定和屬性 使用者...