(一)物件歸檔機制
將要介紹的四種資料持久化機制都涉及應用的/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 抽象類 在以下任一條件成立時,類必須定義成抽象類 類中有至少乙個抽象方法 類繼承了父類中抽象方法,但是至少有乙個抽象方法沒有實現 類實現了某個介面,但沒...