Objective-c序列化包含不同类型的数组的方法

时间:2009-10-11 14:26:00

标签: iphone objective-c cocoa-touch serialization

我的NSMutableArray实例包含具有共同祖先的不同类型对象的实例。我想序列化数组,但NSKeyedArchiver类似乎归档数组包含某些类型的对象。使用库存序列化类有一种简单的方法吗?

1 个答案:

答案 0 :(得分:4)

我不认为NSKeyedArchiver是你的问题,因为它不知道数组或任何东西。也许您需要在每个子类上实现NSCoding协议?

修改

不确定您是如何使用NSKeyedArchiver的,但这是您应该如何使用它:

NSMutableData *data = [NSMutableData new];
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
[archiver encodeObject:array forKey:@"array"];
[data writeToFile:filename attomically:YES];
[archiver release];
[data release];

稍后阅读:

NSData *data = [[NSData alloc] initWithContentsOfFile:filename];
NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
array = [[unarchiver objectForKey:@"array"] retain];
[unarchiver release];
[data release];

这假定arrayNSObject的某种类型,包括NSArrayNSSetNSDictionary等,或其任何可变等价物。< / p>