日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

iOS 序列化与反序列化

發布時間:2025/3/15 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iOS 序列化与反序列化 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

開篇

1到底這個序列化有啥作用?

面向對象的程序在運行的時候會創建一個復雜的對象圖,經常要以二進制的方法序列化這個對象圖,這個過程叫做Archiving.?二進制流可以通過網絡或寫入文件中(來源于某教材的一段話)

本人的理解是當你于寫數據需要本地存儲時,即將你的數據寫到硬盤上的時候,你就必須對他進行序列化,轉換成二進制文件,從而便于在磁盤上的讀寫,同理在取出的時候必須將其在反序列化,這樣才能將數據讀出來,就好比加密和揭秘的過程。

2?為什么我將數據寫到plist?中的時候,也是存儲到本地的磁盤上,但是我就沒有序列化啊?

大家有沒有發現,其實plist?的數據是類型是有限制的,就那么幾種特定的數據類型,,nsstring?,大家有沒有嘗試過將一個自己定義的類放進去(寫進plist?),在讀出來?

結果是什么大家可以先猜想。

其實在nsstring?的類的定義中已經添加了協議?即他是實現了nscoding?代理的方法的。

@interface?NSString?:?NSObject?

深入

3?NScoder?和?NScoding?

NScoding?是一個協議,主要有下面兩個方法

-(id)initWithCoder:(NSCoder?*)coder;//coder中讀取數據,保存到相應的變量中,即反序列化數據

-(void)encodeWithCoder:(NSCoder?*)coder;//?讀取實例變量,并把這些數據寫到coder中去。序列化數據

NSCoder?是一個抽象類,抽象類不能被實例話,只能提供一些想讓子類繼承的方法。

NSKeyedUnarchiver?從二進制流讀取對象。

NSKeyedArchiver?把對象寫到二進制流中去。

4一個簡單的例子

一般是在自己定義的類中需要在.h?文件中加入

.m?文件眾實現他的的兩個代理方法,這個代理方法將會被自動調用

-?(void)encodeWithCoder:(NSCoder?*)aCoder
{
?[aCoder?encodeObject:self.InsureSolutionID?forKey:@"personName"];
?[aCoder?encodeObject:self.InsureSolutionName?forKey:@"personAge"];
}

-?(id)initWithCoder:(NSCoder?*)aDecoder
{
?self?=?[super?init];
?if?(self)
?{
?self.InsureSolutionID?=?[aDecoder?decodeObjectForKey:@"personName"];
?self.InsureSolutionName?=?[aDecoder?decodeObjectForKey:@"personAge"];
?}
?return?self;
}

以上是對該類序列化和反序列化。

NSData?*archiveCarPriceData?=?[NSKeyedArchiver?archivedDataWithRootObject:self.DataArray];
?[[NSUserDefaults?standardUserDefaults]?setObject:archiveCarPriceData?forKey:@"DataArray"];
?

NSData?*myEncodedObject?=?[[NSUserDefaults?standardUserDefaults]?objectForKey:@"DataArray"];
?self.dataList?=?[NSKeyedUnarchiver?unarchiveObjectWithData:?myEncodedObject];

轉載于:https://www.cnblogs.com/AlvinCrash/p/5379457.html

總結

以上是生活随笔為你收集整理的iOS 序列化与反序列化的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。