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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

归档和解档-Archiver

發布時間:2024/7/23 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 归档和解档-Archiver 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、概念
1.歸檔用于保存對象,包括被歸檔對象之間的各種相互關系或者依賴性。解檔用于重建以前歸檔的對象與關系。在其它面向對象的語言中,一般使用術語"序列化"來描述歸檔解檔模式。
2.歸檔的對象通常存儲為二進制數據,可以在內存或者磁盤中讀取,寫入。不過在Cocoa中,也有一些對象使用XML文件進行歸檔和解檔,比如NSArray,NSDictionary等等,這是Cocoa中關于歸檔解檔模式的另一個體現。
3.實現歸檔和解檔模式的關鍵是相關對象的處理。不管對象之間的關系有多復雜,歸檔中的每個對象在那個歸檔中只會編碼一次,也就是說,如果許多歸檔的對象都引用相同的對象,則這個對象只會編碼一次,這就最小化了歸檔所需的存儲空間。
4.有條件的編碼:在許多對象彼此相關但是并非所有關系都需要保留下來的情況下,可以有條件的選擇只對某些對象進行歸檔。
二、Cocoa中的實現
1.NSCoding協議:
(1)當一個對象要實現歸檔解檔操作,需要歸檔的對象必須要實現NSCoding協議。
(2)NSCoding協議包含兩個方法:encodeWithCoder:,initWithCoder:。
(3)encodeWithCoder實現對象編碼,initWithCoder實現對象解碼。兩個方法的參數是NSCoder類實例,是對象編碼解碼器,可以將實例對象的屬性直接編碼或者以key-value的方式編碼,解碼也一樣。? ? 類似的方法如下(每種數據類型都有相關的方法支持):? ? encodeObject:? ? encodeObject:forKey:? ? encodeInt:forKey:? ? decodeObject? ? decodeObjectForKey:? ? decodeIntForKey:
(4)編碼和解碼是對象迭代的一個過程,可能encodeObject:ObjectA方法又會引起ObjectA的encodeWithCoder被調用。
(5)NSCoding實現示例:- (void)encodeWithCoder:(NSCoder*)coder{ ? ?? ? [coder encodeObject:self.userName forKey:SAMPLEDATA_KEY_USERNAME]; ?? ? [coder encodeInt:self.age forKey:SAMPLEDATA_KEY_AGE]; ?? ? [coder encodeBool:self.gender forKey:SAMPLEDATA_KEY_GENDER]; ?? ? [coder encodeObject:self.friends forKey:k_FRIENDS]; ?? ? [coder encodeObject:self.address forKey:k_ADDRESS]; ?? ? [coder encodeObject:self.addresses forKey:k_userEntity_addresses]; ?} ? ??- (id)initWithCoder:(NSCoder*)decoder{ ? ?? ? if (self = [super init]) ?{ ?? ? ? ? if (decoder == nil) ?{ ?? ? ? ? ? ?return self;? ? ? ? } ?? ? ? ? self.userName = [decoder decodeObjectForKey:SAMPLEDATA_KEY_USERNAME]; ?? ? ? ? self.gender = [decoder decodeBoolForKey:SAMPLEDATA_KEY_GENDER]; ?? ? ? ? self.age = [decoder decodeIntForKey:SAMPLEDATA_KEY_AGE]; ?? ? ? ? self.friends = [decoder decodeObjectForKey:k_FRIENDS]; ?? ? ? ? self.address = [decoder decodeObjectForKey:k_ADDRESS]; ?? ? ? ? self.addresses = [decoder decodeObjectForKey: k_userEntity_addresses]; ?? ? } ?? ? return self; ?}?
2.歸檔和解檔工具類:NSKeyedArchiver用于歸檔相關對象,生成NSData;NSKeyedUnarchiver用于解檔對象,從NSData解碼出對象。
3.NSKeyedArchiver和NSKeyedUnarchiver相關API:
(1)NSData *data = [NSKeyedArchiver archivedDataWithRootObject:objectA];? ? NSObject *object = [NSKeyedUnarchiver unarchiveObjectWithData:someData];
(2)Bool isSucc = [NSKeyedArchiver archiveRootObject:rootObject toFile:filePath];? ? NSObject *object = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];
(3)以上兩套API方便的實現單個對象的歸檔和解檔,如果要將多個對象歸檔在一起,可以用以下API:? ??? ? 歸檔:? ? NSMutableData *data = [[NSMutableData alloc] init];? ? NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];? ? [archiver encodeObject:objectA forKey:@"keyA"];? ? [archiver encodeObject:objectB forKey:@"keyB"];? ? [archiver encodeInt:3 forKey:@"keyC"];? ? [archiver finishEncoding];? ? [data writeToFile:filePath atomically:YES];? ? [archiver release];? ? [data release];
? ? 解檔:? ? – initForReadingWithData:? ? – decodeObjectForKey:? ? ?finishDecoding
(4)NSKeyedArchiver有一個屬性outputFormat,類型為NSPropertyListFormat,指定編碼器的編碼格式。有兩個可用的值:NSPropertyListXMLFormat_v1_0 和 NSPropertyListBinaryFormat_v1_0。采用二進制的格式比采用文本的格式占用的空間小,讀寫速度高。

總結

以上是生活随笔為你收集整理的归档和解档-Archiver的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 丰满人妻妇伦又伦精品国产 | 欧美顶级少妇做爰hd | 欧美视频1区 | 老女人网站 | av激情网站 | 男女无遮挡网站 | 国产不卡网 | 亚一区二区 | 欧美激情视频一区二区三区在线播放 | 色婷婷一区二区三区四区 | 亚洲播播 | 国产精品自产拍在线观看 | 成人午夜激情影院 | 黑人极品videos精品欧美裸 | 欧美乱妇狂野欧美视频 | 久久福利在线 | 国产欧美一区二区精品久久久 | 亚洲天堂成人av | 免费在线观看黄色网址 | 日本免费在线视频观看 | 国产精品国产 | 美丽的姑娘观看在线播放 | 免费看成人啪啪 | 玖玖爱精品 | 最新av免费在线观看 | 无码人妻一区二区三区av | 国产精品成人无码 | 日日噜夜夜噜 | 爆乳熟妇一区二区三区霸乳 | 国产夫妇交换聚会群4p | 一区二区有码 | 中文字幕一区二区在线老色批影视 | 中文天堂在线观看 | 欧美成人毛片 | 日韩欧美99 | 成人国产精品免费观看动漫 | 91爽爽| 性视频久久| 女人的天堂av在线 | 亚洲精品20p | 久久精品视频一区 | 丰满熟妇人妻av无码区 | 一级免费a| 一区二区三区精品免费视频 | 亚洲精品二区 | 激情欧美一区二区免费视频 | 欧美被狂躁喷白浆精品 | 色屁屁影院www国产高清麻豆 | 国产男男chinese网站 | 亚洲精品国产一区 | 黑人巨大精品欧美黑寡妇 | 国产成人自拍视频在线观看 | 伊人春色网 | 国产成人免费在线视频 | 欧美精品一区在线发布 | 国产在线网 | 91性高潮久久久久久久久 | 精品无码免费视频 | 国产精品久久久久国产a级 国产一区二区在线播放 | 91视频com| 性一交一乱一乱一视频 | 一区二区三区色 | 色综合av在线| 亚洲图色在线 | 欧美日韩成人网 | 久久av综合 | 奇米影视中文字幕 | 国产人妻人伦精品1国产盗摄 | 午夜免费一级片 | 亚洲午夜无码久久久久 | 亚洲一区欧美二区 | 日本黄色大片免费 | 午夜国产一级 | 三级精品视频 | 日韩 欧美 自拍 | 黑人巨大精品欧美黑白配亚洲 | av中文字幕在线播放 | 在线播放成人av | 欧美一区二区二区 | 男生和女生一起差差差很痛的视频 | 国产又黄又粗 | 青青草偷拍视频 | 国产在线无码精品 | 成av人在线观看 | 夫妻淫语绿帽对白 | 吊侵犯の奶水授乳羞羞漫画 | 日本成人在线免费视频 | 欧美国产一区二区在线观看 | 午夜免费看片 | 99久热在线精品996热是什么 | 欧美综合在线观看 | 国产精品一二三级 | 色视频网 | 色站在线 | 日韩第一页在线 | 亚洲aaa| 国产老女人乱淫免费 | 国产福利合集 | 成人在线午夜 |