全國咨詢/投訴熱線:400-618-4000

淺談iOS開發中的對象歸檔

更新時間:2016年09月29日17時11分 來源:傳智論壇 瀏覽次數:

iOS提供的數據持久化方式有:SQLiteCoreData屬性列表、NSUserDefault對象歸檔。


這里來簡單介紹下iOS開發中的對象歸檔:


對象歸檔是將對象歸檔以文件的形式保存到磁盤中(也稱為序列化,持久化)使用的時候讀取該文件的保存路徑讀取文件的內容(也稱為接檔,反序列化)


對象歸檔的文件是保密的磁盤上無法查看文件中的內容,而屬性列表是明文的可以查看)


對象歸檔有兩種方式:1、對foundat中對象進行歸檔 2、自定義對象歸檔


1、簡單對象歸檔


使用兩個類:NSKeyedA richivNSKeyedUnarchiver


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


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


NSA rrai*arrai

Boolflag=[NSKeyedA richivarchiveRootObject:arraitoFile:homePath];

ifflag{

NSLo歸檔成功!";

}

讀取歸檔文件的內容:

NSA rrai*arrai=[NSKeyedUnarchivunarchiveObjectWithFile:homePath];

NSLo,arrai;

這樣就簡單了實現了將NSA rrai對象的歸檔和解檔。


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


2、自定義內容歸檔


使用NSData實例作為歸檔的存儲數據


添加歸檔的內容---使用鍵值對


完成歸檔


解歸檔:


從磁盤讀取文件,生成NSData實例


根據NSData實例和初始化解歸檔實例


解歸檔,根據kei訪問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]; //結束添加對象到data中

[archivrelease];

[datawriteToFile:homePath atomically:YES];//將data寫到文件中保存在磁盤上

NData*content=[NSDatadataWithConenteOfFile:homePath];

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

floatag=[unarchivdecodeFloatForKey"age"];

NSStr*name=[unarchivdecodeObjectForKey"name"]


在iOS開發中,除了歸檔問題,往往不注意的是安全問題。別以為,就Android會爆漏洞,早在WireLurker出現的時候,iOS的安全神話就已經不復存在了。而目前在國內,iOS安全加密保護這塊還是空白。但是,廣大iOS開發者也不必擔心,因為就在前不久,已經有平臺推出了iOS應用加密服務,針對iOS的技術原理和解開原理,分別從本地數據、方法體/方法名、URL編碼、程序結構、網絡傳輸數據等幾個方面對iOS應用進行全方位的保護,并可以根據iOS應用用戶的需求提供定制解決方案,從而實現iOS防揭秘保護。

人妻系列无码专区_漂亮人妻被中出中文字幕_人妻中文制服巨乳中文