教育行業(yè)A股IPO第一股(股票代碼 003032)

全國(guó)咨詢(xún)/投訴熱線(xiàn):400-618-4000

淺談iOS開(kāi)發(fā)中的對(duì)象歸檔

更新時(shí)間:2016年09月29日17時(shí)11分 來(lái)源:傳智論壇 瀏覽次數(shù):

iOS提供的數(shù)據(jù)持久化方式有:SQLiteCoreData屬性列表、NSUserDefault對(duì)象歸檔。


這里來(lái)簡(jiǎn)單介紹下iOS開(kāi)發(fā)中的對(duì)象歸檔:


對(duì)象歸檔是將對(duì)象歸檔以文件的形式保存到磁盤(pán)中(也稱(chēng)為序列化,持久化)使用的時(shí)候讀取該文件的保存路徑讀取文件的內(nèi)容(也稱(chēng)為接檔,反序列化)


對(duì)象歸檔的文件是保密的磁盤(pán)上無(wú)法查看文件中的內(nèi)容,而屬性列表是明文的可以查看)


對(duì)象歸檔有兩種方式:1、對(duì)foundat中對(duì)象進(jìn)行歸檔 2、自定義對(duì)象歸檔


1、簡(jiǎn)單對(duì)象歸檔


使用兩個(gè)類(lèi):NSKeyedA richivNSKeyedUnarchiver


NSStr*homeDirectori=NSHomeDirectori; //獲取根目錄


NSStringhomePath=[homeDirectoristringByA ppendingPathComponent自定義文件名,如test.archive


NSA rrai*arrai

Boolflag=[NSKeyedA richivarchiveRootObject:arraitoFile:homePath];

ifflag{

NSLo歸檔成功!";

}

讀取歸檔文件的內(nèi)容:

NSA rrai*arrai=[NSKeyedUnarchivunarchiveObjectWithFile:homePath];

NSLo,arrai;

這樣就簡(jiǎn)單了實(shí)現(xiàn)了將NSA rrai對(duì)象的歸檔和解檔。


但是這種歸檔方式有個(gè)缺點(diǎn),就是一個(gè)文件只能保存一個(gè)對(duì)象,如果有多個(gè)對(duì)象要保存的話(huà)那豈不是有n多個(gè)文件,這樣不是很適合的所以有了下面這種歸檔方式。


2、自定義內(nèi)容歸檔


使用NSData實(shí)例作為歸檔的存儲(chǔ)數(shù)據(jù)


添加歸檔的內(nèi)容---使用鍵值對(duì)


完成歸檔


解歸檔:


從磁盤(pán)讀取文件,生成NSData實(shí)例


根據(jù)NSData實(shí)例和初始化解歸檔實(shí)例


解歸檔,根據(jù)kei訪(fǎng)問(wèn)value


NSStr*homeDirectori=NSHomeDirectori;//獲取根目錄

NSStringhomePath=[homeDirectoristringByA ppendingPathComponent自定義文件名,如test.archive

NSMutableData*data=[[NSMutableDataalloc]init];

NSKeyedA rchiv*archiv=[[NSKeyedA rchivalloc]initForWritingWithMutableData:data];

[archivencodeFloat:50forKey,age"];

[archivencodeObject"jack"forKey"name"];

[archivfinishEncoding]; //結(jié)束添加對(duì)象到data中

[archivrelease];

[datawriteToFile:homePath atomically:YES];//將data寫(xiě)到文件中保存在磁盤(pán)上

NData*content=[NSDatadataWithConenteOfFile:homePath];

NSKeyedUnarchiv*unarchiv=[[NSKeyedUnarchivalloc]initForReadingWithData:content];

floatag=[unarchivdecodeFloatForKey"age"];

NSStr*name=[unarchivdecodeObjectForKey"name"]


在iOS開(kāi)發(fā)中,除了歸檔問(wèn)題,往往不注意的是安全問(wèn)題。別以為,就Android會(huì)爆漏洞,早在WireLurker出現(xiàn)的時(shí)候,iOS的安全神話(huà)就已經(jīng)不復(fù)存在了。而目前在國(guó)內(nèi),iOS安全加密保護(hù)這塊還是空白。但是,廣大iOS開(kāi)發(fā)者也不必?fù)?dān)心,因?yàn)榫驮谇安痪茫呀?jīng)有平臺(tái)推出了iOS應(yīng)用加密服務(wù),針對(duì)iOS的技術(shù)原理和解開(kāi)原理,分別從本地?cái)?shù)據(jù)、方法體/方法名、URL編碼、程序結(jié)構(gòu)、網(wǎng)絡(luò)傳輸數(shù)據(jù)等幾個(gè)方面對(duì)iOS應(yīng)用進(jìn)行全方位的保護(hù),并可以根據(jù)iOS應(yīng)用用戶(hù)的需求提供定制解決方案,從而實(shí)現(xiàn)iOS防揭秘保護(hù)。

0 分享到:
和我們?cè)诰€(xiàn)交談!