您的位置:首页 > 其它

什么序列化反序列化以及自定义类型归档什么的,一点个人看法

2014-12-31 00:48 447 查看
项目中最近用到了一点关于存NSUserdefault的问题,因为是自定义的对象,而NSUserdefault系统只支持NSString, NSNumber, NSDate, NSArray, NSDictionary,于是在存对象时就出现了问题。然后看了一下,其实很基本的东西,主要好久不用了,有点生疏。也算不上什么原理吧,就个人的一点小看法。明天去项目跑跑看。

首先你要归档某个对象的话,首先要在其所在的类中重写两个方法,并且遵守<NSCoding>协议

- (id) initWithCoder: (NSCoder *)coder

{

if (self = [super init])

{

self._firstName = [coder decodeObjectForKey:@"_firstName"];

self._lastName = [coder decodeObjectForKey:@"_lastName"];

}

return self;

}

- (void) encodeWithCoder: (NSCoder *)coder

{

[coder encodeObject:_firstName forKey:@"_firstName"];

[coder encodeObject:_lastName forKey:@"_lastName"];

}

然后以Data为中介,其实最终相当于你存的时NSData然后到时候还原就是了。

BusinessCard *bc = [[BusinessCard alloc] init];

NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];

NSData *udObject = [NSKeyedArchiver archivedDataWithRootObject:bc];

[ud setObject:udObject forKey:@"myBusinessCard"];

[bc release];

udObject = nil;

udObject = [ud objectForKey:@"myBusinessCard"];

bc = [NSKeyedUnarchiver unarchiveObjectWithData:udObject] ;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐