ios序列化最终方案
最近在整合一些与服务器交互的东西,准备使用序列化的一些东西
使用NSCoding 来进行NSObject 的序列化实现: 整合了网上搜集的两片文章完成了功能:
http://www.cnblogs.com/likwo/archive/2011/05/26/2058134.html
- ( void )encodeWithCoder:(NSCoder * )coder{
Class clazz = [self class ];
u_int count;
objc_property_t * properties = class_copyPropertyList(clazz, & count);
NSMutableArray * propertyArray = [NSMutableArray arrayWithCapacity:count];
for ( int i = 0 ; i < count ; i ++ )
{
const char * propertyName = property_getName(properties[i]);
[propertyArray addObject:[NSString stringWithCString:propertyName encoding:NSUTF8StringEncoding]];
}
free(properties);
for (NSString * name in propertyArray)
{
id value = [self valueForKey:name];
[coder encodeObject:value forKey:name];
}
}
- (id)initWithCoder:(NSCoder * )decoder
{
if (self = [super init])
{
if (decoder == nil)
{
return self;
}
Class clazz = [self class ];
u_int count;
objc_property_t * properties = class_copyPropertyList(clazz, & count);
NSMutableArray * propertyArray = [NSMutableArray arrayWithCapacity:count];
for ( int i = 0 ; i < count ; i ++ )
{
const char * propertyName = property_getName(properties[i]);
[propertyArray addObject:[NSString stringWithCString:propertyName encoding:NSUTF8StringEncoding]];
}
free(properties);
for (NSString * name in propertyArray)
{
id value = [decoder decodeObjectForKey:name];
[self setValue:value forKey:name];
}
}
return self;
}