iOS中的資料持久化方法

2021-06-27 05:53:22 字數 2956 閱讀 8981

目前在ios開發中,實現資料持久化的方法主要由四種,分別為屬性列表、歸檔、資料庫、core data,下面我就給大家簡單介紹一下他們的用法

一、屬性列表

主要用到的類:

nsuserdefaults

,下面我建乙個user類

@inte***ce

user :

nsobject

<

nscoding

>//首先要遵守nscoding協議

@property(nonatomic,assign)

nsinteger

userid;

@property(nonatomic,copy)

nsstring

*name;

@end

使用方法

1.將屬性分開儲存

//存入物件(將id、name分開儲存)

[[nsuserdefaults

standarduserdefaults

]setinteger

:userid

forkey

:@"userid"];

[[nsuserdefaults

standarduserdefaults]setobject:

name

forkey:

@"name"];

//取出物件

nsinteger

uid = [[

nsuserdefaults

standarduserdefaults]integerforkey:

@"userid"];

nsstring

* name = [[

nsuserdefaults

standarduserdefaults]stringforkey:

@"name"];

2.按物件訪問

// 存入user物件

[[nsuserdefaults

standarduserdefaults]setobject:

self

forkey:

@"user"

];// 取出user物件

user

*user = [[

nsuserdefaults

standarduserdefaults]objectforkey:

@"user"

];二、歸檔

使用歸檔,要遵循nscoding協議,實現下邊的兩個方法: 

// 以下兩個方法一定要實現,不然在呼叫的時候會crash

#import "user.h"

@implementationuser

- (instancetype)initwithname:(nsinteger)uid name:(nsstring *)name

returnself;}

/**此處需要注意的是,編碼和解碼時的key必須是一致的,要不然取不到內容

**///編碼

- (void)encodewithcoder:(nscoder *)acoder

//解碼

- (id)initwithcoder:(nscoder *)adecoder

@end

下面的這段**就是在你想要執行操作的控制器裡面實現的: //

沙盒路徑下的某個資料夾

,用來儲存歸檔物件

nsstring

*documentspath = [nssearchpathfordirectoriesindomains(nsdocumentdirectory,nsuserdomainmask,

yes)objectatindex:0];

filepath

@"kkk.txt"];

//歸檔類(即儲存物件)

user *user = [[user

alloc] initwithuid:1

name:@"

張華"];

nsmutabledata*data = [[nsmutabledata

alloc

] init

];nskeyedarchiver

*archiver = [[

nskeyedarchiver

alloc] initforwritingwithmutabledata:data];

[archiver

encodeobject

:user

forkey

:@"user"

];//此時會執行user的encodewithcoder:方法

[archiverfinishencoding];//

結束編碼

(歸檔完畢後

)[data writetofile:

filepath

atomically:

yes];

//存入沙盒中的某個檔案下

//反歸檔(即取出物件)

nsdata

*data1 = [

nsdata

datawithcontentsoffile:

filepath

];nskeyedunarchiver*unarchiver = [[nskeyedunarchiver

alloc

] initforreadingwithdata

:data1];

user *user1 = [unarchiver decodeobjectforkey:@"user"];//

此時會執行p1的

initwithcoder:

方法nslog(@"%d %@",user1.userid,user1.name);

三、資料庫

大家可以去資料庫的那篇文章去看,我個人認為寫的還是蠻詳細的。

四、core date

core date內容比較多,我會在下篇文章中和大家分享,希望上邊寫的對大家能有幫助。

ios中的資料持久化

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

iOS終端資料持久化

ios有很多資料持久化技術,包括傳統的資料庫,但也有一些較新的技術,它主要的持久化技術有 資料庫 屬性列表 物件歸檔和。本節將分別介紹這四種持久化方式,輔助本文在設計與實現中針對不同的需求選擇合適的資料持久化方式。資料庫技術被廣泛的使用在各大系統中,資料庫也是乙個系統的核心部分,資料庫管理系統如今發...

iOS 資料持久化 Plist

獲取plist檔案位址 nsstring path nsbundle mainbundle pathforresource people oftype plist 獲取plist檔案內容 乙個字典 nsdictionary dict nsdictionary dictionarywithconten...