我的NSMutableArray实例包含具有共同祖先的不同类型对象的实例。我想序列化数组,但NSKeyedArchiver类似乎归档数组包含某些类型的对象。使用库存序列化类有一种简单的方法吗?
答案 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];
这假定array
是NSObject
的某种类型,包括NSArray
,NSSet
,NSDictionary
等,或其任何可变等价物。< / p>