OC中的归档解档

oc中的归档就是把对象写到文件中.

首先模型必须遵守NSCoding协议,并且实现其中的方法 (归档):- (void)encodeWithCoder:(NSCoder*)aCoder;(解档):- (id)initWithCoder:(NSCoder*)aDecoder;


@interfacePerson :NSObject<NSCoding>

@property(nonatomic,copy)NSString*name;//名称

@property(nonatomic,strong)NSNumber*age;//年龄

@property(nonatomic,copy)NSString*occupation;//职业

@property(nonatomic,copy)NSString*nationality;//国籍

@end


/**

*归档***编码

*

*@param aCoder

*/

- (void)encodeWithCoder:(NSCoder*)aCoder{

unsignedintcount =0;

Ivar*ivars =class_copyIvarList([selfclass], &count);

for(NSIntegeri=0; i

Ivarivar = ivars[i];

constchar*iName =ivar_getName(ivar);

NSString*iStr = [NSStringstringWithUTF8String:iName];

idvalue = [selfvalueForKey:iStr];

[aCoderencodeObject:valueforKey:iStr];

}

free(ivars);

}

//解码

- (id)initWithCoder:(NSCoder*)aDecoder{

self= [superinit];

if(self){

unsignedintcount =0;

Ivar*ivars =class_copyIvarList([selfclass], &count);

for(NSIntegeri=0; i

Ivarivar = ivars[i];

constchar*key =ivar_getName(ivar);

NSString*iName = [NSStringstringWithUTF8String:key];

idvalue = [aDecoderdecodeObjectForKey:iName];

[selfsetValue:valueforKey:iName];

}

free(ivars);

}

returnself;

}



Person*person = [[Personalloc]init];

person.name=@"xiaowei";

person.age=@(22);

person.occupation=@"IT程序猿";

person.nationality=@"中国";

NSString*path =NSHomeDirectory();

path = [pathstringByAppendingPathComponent:@"xiaowei"];

NSLog(@"paht = %@",path);

//归档

[NSKeyedArchiverarchiveRootObject:persontoFile:path];

//解归档

Person*laoxiao = [NSKeyedUnarchiverunarchiveObjectWithFile:path];

NSLog(@"欢迎%@岁的%@回到%@从事%@",laoxiao.age,laoxiao.name,laoxiao.occupation,laoxiao.nationality);


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序邦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值