資料持久化基礎知識筆記

2021-07-11 03:56:54 字數 2409 閱讀 6874

一)物件歸檔機制

將要介紹的四種資料持久化機制都涉及應用的/document 資料夾,每個應用對應自己的資料夾,且只能讀寫自己的資料夾。該資料夾包含應用的資料。但基於nsuserdefaults首選項設定除外。

1.獲取該目錄路徑

使用c函式,nssearchpathfordirectiriesindomain()來查詢各種目錄。

例如:nsarray *paths=nssearchpathfordirectiriesindomain(nsdocumentdirectory,nsuerdomainmask,yes);

nsstring*documentsdirectory=path[0];

再為獲取的路徑結尾附加另乙個字串來建立檔名;

完成此呼叫以後,filename就是指向應用的document目錄中thefile.text檔案完整路徑『然後我們可以使用filename來建立,讀取和寫入檔案。

2檔案儲存方案

2.1 物件歸檔

只要在類中實現的每個屬性都是標量(如int或float)或都是遵循nscoding協議的某個類的例項,就可以對整個物件進行歸檔,一般還需實現nscopying協議。

nscoding 協議中的兩個方法必須過載,乙個是編碼,另外乙個是解碼。

-(void)encodewithcoder:(nscoder*)encoder  編碼

[ super encodewithcoder:coder];//如果在子類化某個遵循了nscoding 的類,確保對超類呼叫encodewithcoder:方法

[ encoder encodeobject: sth forkey:somekey];

如果直接對nsobject進行子類化,或者對某些不遵循nscoding的其他類進行子類化

-(id)initwithcode:(nscoder*)coder

if(self=[super init])

sth=[decoder decodeobjectforkey: somekey];//通過鍵獲取值

return self;

當為某個具有超類遵循nscoding 實現方法時,

-(id)intitwithcoder:(nscoder*)coder

if(self=[super intiwithcoder:coder])

sth=[decoder decodeobjectforkey:key];

return self;

nscopying 協議方法-

-(id)copywithzone:(nszone*)zone

myclass*copy=[[[self class]allocwithzone:zone]init];

copy.for =[self.foo copywithzone:zone];

copy.bar=[self.bar copywith:zone];

copy.someint=self.someint;

copy.somefloat=self.somefloat;

對資料進行歸檔

首先建立乙個nsmutabledata例項,用於包含編碼的資料,然後建立乙個nskeyedarchiver例項;用於將物件歸檔到此nsmutabledata例項中;

nsmutabledata*data=[[nsmutabledata alloc]init];

nskeyedarchiver*archiver=[[nskeyedarchiver alloc] initforwritingwithmutabledata:data];

建立好這兩個例項後就可以進行歸檔

[archiver encodeobject:object forkey:key];

全部編碼後呼叫

[archiver finishingencoding];

bool success=[data writetofile:filename atomically:yes]; 資料已經寫入指定的filename資料夾。filename就是/document中的資料夾

從歸檔的資料夾取出資料

首先建立乙個nsdata 例項,並建立乙個nskeyedunarchiver

nsdata *data=[[nsdata alloc] initwithcontentoffile:filename];

nskeyedunarchiver* unarchiver=[[nskeyedunarchiver alloc]initforreadingwithdata;data];

然後使用同一鍵名從unarchiver中取出資料

self.object=[unarchiver decodeobjectforkey:keyname];

[unarchiver finishdecoding];//告知完成操作

資料持久化基礎知識 歸檔

使用物件模型進行歸檔,將物件寫入檔案,再從中讀取它們。1.首先的建立乙個類,fourlines類.fourlines.h 1 import23 資料模型,儲存當前儲存在屬性列表應用的字典中的資料。4 inte ce fourlines nsobject 5 property copy,nonatom...

資料庫的持久化基礎知識

1 什麼是持久化 資料的持久化就是將記憶體中的資料模型轉化為儲存模型,資料模型是任何的資料結構或者是物件,儲存模型可以是關係型,xml,二進位製流。狹義的理解,持久化僅僅是指把物件資料永久儲存在資料庫中,資料在計算機中一般由兩個儲存地,記憶體為暫存,資料庫可以理解為永存 廣義的理解,持久化包括和資料...

java基礎知識筆記

1,sigleton設計模式 單子模式 的實現方法 建立乙個類,滿足 構造器私有 用乙個私有 靜態變數引用例項 提供乙個公有 靜態方法獲得例項 2 抽象類 在以下任一條件成立時,類必須定義成抽象類 類中有至少乙個抽象方法 類繼承了父類中抽象方法,但是至少有乙個抽象方法沒有實現 類實現了某個介面,但沒...