什么序列化反序列化以及自定义类型归档什么的,一点个人看法
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] ;
首先你要归档某个对象的话,首先要在其所在的类中重写两个方法,并且遵守<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] ;
相关文章推荐
- IOS文件操作和自定义对象的归档(序列化)、反归档(反序列化)
- VB里将自定义type类型序列化,及反序列化.
- 结合手机上网流量业务来说明Hadoop中的自定义数据类型(序列化、反序列化机制)
- Unity JSON文件的写入(序列化)与读取(反序列化)、以及自定义JSON编辑器
- Jackson 自定义序列化 & 反序列化 对象类型
- IO Serializable 序列化和反序列化以及自定义的序列化
- Hadoop系列-MapReduce自定义数据类型(序列化、反序列化机制)(十二)
- Int类型数据的序列化以及反序列化(与Java服务器通讯预热)
- hadoop数据类型以及序列化和反序列化
- 怎么看待移动互联网时代 关于移动互联网时代的一点个人看法总结 在强烈的产业变化时期,主流观点是不靠谱的 什么是浪潮呢? 小型化、无线化、智能化。
- AJAX JSON中日期类型DateTime格式化的序列化自定义对象以及自定义类型参数的问题处理
- 对为什么使用访问器(getter),以及什么是继承的一点看法
- VB6各数据类型序列化和反序列化
- “个人养老保险将可随本人转移”的一点看法
- .NET Framework 3.5中序列化成JSON数据及JSON数据的反序列化,以及jQuery的调用JSON
- .NET Framework 3.5中序列化成JSON数据及JSON数据的反序列化,以及jQuery的调用JSON
- 转 对研发工程师的职业前途的一点个人看法
- 关于SAVEPOINT和自定义异常使用的一点看法
- 自定义窗体样式以及个人总结
- 关于JUNIPER模拟器(虚拟机程序和PC模拟)的一点个人看法