15-3 使用NSData讀寫多個(gè)對(duì)象

使用NSData讀寫多個(gè)對(duì)象

#import <Foundation/Foundation.h>
#import "MyClass.h"
#import "MyClass1.h"
//  對(duì)象的編碼和解碼(序列化和反序列化)
int main(int argc, const char * argv[]) {
    @autoreleasepool {
#warning 使用NSData讀寫多個(gè)對(duì)象
        NSMutableData *data;
        
        data = [NSMutableData data];//初始化NSMutableData
        NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc]initForWritingWithMutableData:data];//初始化NSKeyedArchiver
        MyClass1 *my2 = [[MyClass1 alloc]init];
        my2.value = 123;
        [archiver encodeObject:my forKey:@"myClass"];
        
        [archiver encodeObject:my2 forKey:@"myClass1"];
        
        [archiver finishEncoding];
        
        if([data writeToFile:@"two_objects" atomically:YES] == YES)
        {
            NSLog(@"兩個(gè)對(duì)象存儲(chǔ)成功.");
        }
        
        //  恢復(fù)MyClass和MyClass1
        NSData *data1;
        data1 = [NSData dataWithContentsOfFile:@"two_objects"];
        if(!data1)
        {
            NSLog(@"不能讀取兩個(gè)對(duì)象.");
            return 1;
        }
        NSKeyedUnarchiver *twoObjects;
        twoObjects = [[NSKeyedUnarchiver alloc]initForReadingWithData:data1];
        MyClass *myClass = [twoObjects decodeObjectForKey:@"myClass"];
        MyClass1 *myClass1 = [twoObjects decodeObjectForKey:@"myClass1"];
        [twoObjects finishDecoding];
        
        NSLog(@"myClass.email = %@", myClass.email);//myClass.email = bill@microsoft.com
        NSLog(@"myClass1.value = %d", myClass1.value);//myClass1.value = 123
            
    }
    return 0;
}
#import <Foundation/Foundation.h>

@interface MyClass1 : NSObject<NSCoding>
@property int value;
@end
#import "MyClass1.h"

@implementation MyClass1
@synthesize value;
//  編碼
-(void)encodeWithCoder:(NSCoder *)aCoder
{
    [aCoder encodeObject:[NSNumber numberWithInt:value] forKey:@"key_value"];
}
//  解碼
-(id)initWithCoder:(NSCoder *)aDecoder
{
    value = [[aDecoder decodeObjectForKey:@"key_value"] intValue];

    return self;
}
@end
#import <Foundation/Foundation.h>

@interface MyClass : NSObject<NSCopying,NSCoding>
@property (copy, nonatomic) NSString *name, *email;
@end
#import "MyClass.h"

@implementation MyClass
@synthesize name, email;
-(id)copyWithZone:(NSZone *)zone
{
    MyClass* my = [[MyClass allocWithZone:zone]init];
    my.name = name;
    my.email = email;
    return my;
}
//  編碼
-(void)encodeWithCoder:(NSCoder *)aCoder
{
    [aCoder encodeObject:name forKey:@"key_name"];
    [aCoder encodeObject:email forKey:@"key_email"];
}
//  解碼
-(id)initWithCoder:(NSCoder *)aDecoder
{
    name = [aDecoder decodeObjectForKey:@"key_name"];
    email = [aDecoder decodeObjectForKey:@"key_email"];
    return self;
}
@end
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末陆淀,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子爸舒,更是在濱河造成了極大的恐慌川无,老刑警劉巖拒炎,帶你破解...
    沈念sama閱讀 223,126評(píng)論 6 520
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件孤钦,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡肴茄,警方通過查閱死者的電腦和手機(jī)晌畅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,421評(píng)論 3 400
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來独郎,“玉大人踩麦,你說我怎么就攤上這事枚赡∶グ” “怎么了?”我有些...
    開封第一講書人閱讀 169,941評(píng)論 0 366
  • 文/不壞的土叔 我叫張陵贫橙,是天一觀的道長(zhǎng)贪婉。 經(jīng)常有香客問我,道長(zhǎng)卢肃,這世上最難降的妖魔是什么疲迂? 我笑而不...
    開封第一講書人閱讀 60,294評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮莫湘,結(jié)果婚禮上尤蒿,老公的妹妹穿的比我還像新娘。我一直安慰自己幅垮,他們只是感情好腰池,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,295評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著忙芒,像睡著了一般示弓。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上呵萨,一...
    開封第一講書人閱讀 52,874評(píng)論 1 314
  • 那天奏属,我揣著相機(jī)與錄音,去河邊找鬼潮峦。 笑死囱皿,一個(gè)胖子當(dāng)著我的面吹牛勇婴,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播嘱腥,決...
    沈念sama閱讀 41,285評(píng)論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼咆耿,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了爹橱?” 一聲冷哼從身側(cè)響起萨螺,我...
    開封第一講書人閱讀 40,249評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎愧驱,沒想到半個(gè)月后慰技,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,760評(píng)論 1 321
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡组砚,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,840評(píng)論 3 343
  • 正文 我和宋清朗相戀三年吻商,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片糟红。...
    茶點(diǎn)故事閱讀 40,973評(píng)論 1 354
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡艾帐,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出盆偿,到底是詐尸還是另有隱情柒爸,我是刑警寧澤,帶...
    沈念sama閱讀 36,631評(píng)論 5 351
  • 正文 年R本政府宣布事扭,位于F島的核電站捎稚,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏求橄。R本人自食惡果不足惜今野,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,315評(píng)論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望罐农。 院中可真熱鬧条霜,春花似錦、人聲如沸涵亏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,797評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽溯乒。三九已至夹厌,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間裆悄,已是汗流浹背矛纹。 一陣腳步聲響...
    開封第一講書人閱讀 33,926評(píng)論 1 275
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留光稼,地道東北人或南。 一個(gè)月前我還...
    沈念sama閱讀 49,431評(píng)論 3 379
  • 正文 我出身青樓孩等,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親采够。 傳聞我的和親對(duì)象是個(gè)殘疾皇子肄方,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,982評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • iPhone的標(biāo)準(zhǔn)推薦是CFNetwork 庫(kù)編程,其封裝好的開源庫(kù)是 cocoa AsyncSocket庫(kù)蹬癌,用它...
    Ethan_Struggle閱讀 2,251評(píng)論 2 12
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,113評(píng)論 1 32
  • 307权她、setValue:forKey和setObject:forKey的區(qū)別是什么? 答:1, setObjec...
    AlanGe閱讀 1,554評(píng)論 0 1
  • 國(guó)家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報(bào)批稿:20170802 前言: 排版 ...
    庭說閱讀 11,016評(píng)論 6 13
  • 水水297閱讀 168評(píng)論 0 0