objective-c自定义类对象的序列化和反序列化
2013-03-08 16:03
363 查看
在ios应用中如果需要保存大对象数据可以采用xml文件或者属性文件方式,但由于采用的纯文本方式保密性不够,如将保存数据封装为自定义类的实例通过序列化的二进制方式进行保存,这样安全性会有所提高。另外后面文章将介绍一些RSA、MD5等算法对保存数据进行加密和解密。
具有序列化能力的类必须实现NSCoding协议的两个函数:
例如一个网站的注册用户信息类,包含站点名称siteName、站点地址siteAddress、注册用户名userName、登录密码password、用户头像logoImage。
该数据类的声明代码:
对数据成员序列化时需要实现- (void)encodeObject:(id)objv forKey:(NSString*)key,如果数据成员是基本数据类型int时,需要使用
- (void)encodeInt:(int)intv forKey:(NSString*)key,encodeWithCoder的具体实现方式如下所示。
注意:为序列化指定的key值必须保持唯一性,编码和解码过程中使用的key必须一致。
对userInfo对象的序列化和反序列化代码如下所示。
转帖:http://blog.csdn.net/hsyj_0001/article/details/7594642
具有序列化能力的类必须实现NSCoding协议的两个函数:
-(void) encodeWithCoder:(NSCoder *)encoder; -(id) initWithCoder:(NSCoder *)decoder;其中encodeWithCoder函数使自定义对象的各数据字段序列化,initWithCoder函数使二进制数据文件反序列化为对象实例。
例如一个网站的注册用户信息类,包含站点名称siteName、站点地址siteAddress、注册用户名userName、登录密码password、用户头像logoImage。
该数据类的声明代码:
#import <Foundation/Foundation.h> @interface RegUserInfo : NSObject <NSCoding> { NSString *siteName; NSString *siteAddress; NSString *userName; UIImage *logoImage; } @property (nonatomic, strong) NSString *siteName, *siteAddress, *userName; @property (nonatomic, strong) UIImage *logoImage; @end
对数据成员序列化时需要实现- (void)encodeObject:(id)objv forKey:(NSString*)key,如果数据成员是基本数据类型int时,需要使用
- (void)encodeInt:(int)intv forKey:(NSString*)key,encodeWithCoder的具体实现方式如下所示。
-(void) encodeWithCoder:(NSCoder *)encoder { [encoder encodeObject:siteName forKey:@"siteName"]; [encoder encodeObject:siteAddress forKey:@"siteAddress"]; [encoder encodeObject:userName forKey:@"userName"]; [encoder encodeObject:logoImage forKey:@"logoImage"]; }
注意:为序列化指定的key值必须保持唯一性,编码和解码过程中使用的key必须一致。
对userInfo对象的序列化和反序列化代码如下所示。
/*序列化成arch.dat文件*/ [NSKeyedArchiver archiveRootObject:userInfo toFile:@"arch.dat"]; /*由文件arch.dat反序列化成RegUserInfo对象*/ RegUserInfo *newUserInfo = [NSKeyedUnarchiver unarchiveObjectWithFile: @"arch.dat"];
转帖:http://blog.csdn.net/hsyj_0001/article/details/7594642
相关文章推荐
- NSUserDefaults存储自定义对象(序列化和反序列化存放自定义对象)
- IOS文件操作和自定义对象的归档(序列化)、反归档(反序列化)
- Jackson 自定义序列化 & 反序列化 对象类型
- Java对象的序列化和反序列化实践
- Java 对象直接写入文件 --序列化和反序列化
- Flex 序列化自定义类 解决 sharedObject 保存自定义对象
- 对象序列化和反序列化
- Java基础学习总结——Java对象的序列化和反序列化
- 再谈Silverlight中的对象序列化/反序列化
- objective-C 自定义对象归档的实现
- Java对象的XML序列化和反序列化 - (2)
- Java学习笔记之对象的序列化和反序列化
- java io (六) 对象序列化,反序列化 -- Serializable接口
- 对象,对象集合的简单Xml序列化与反序列化 【实用代码,含泛型方法】
- Java对象的序列化和反序列化Serializable
- Java对象的序列化和反序列化实践
- java对象表示方式:序列化和反序列化
- 通过序列化和反序列化实现对象实例化
- Java对象的序列化和反序列化
- java基础总结之java对象的序列化和反序列化