我有一个 mainObjectArray (NSMutableArray),其中填充了自定义类的实例。每个实例本身就是一个数组,每个数组中的对象是 NSDates、NSStrings、BOOL 以及更多包含类似对象的数组。
我无法确定的是,在
- (void)encodeWithCoder:(NSCoder *)encoder
方法,就这么说吧:
[encoder encodeWithObject:mainObjectArray];
或者必须分别对每个实例中的每个对象进行编码?这会有点痛苦......
非常感谢您的帮助。
最佳答案
只需在自定义类中实现编码和解码方法即可。这样就可以了。一些样本,
- (void)encodeWithCoder:(NSCoder *)encoder
{
[encoder encodeObject:[NSNumber numberWithInt:pageNumber] forKey:@"pageNumber"];
[encoder encodeObject:path forKey:@"path"];
[encoder encodeObject:array forKey:@"array"];
}
- (id)initWithCoder:(NSCoder *)aDecoder
{
if(self = [super init])
{
self.pageNumber = [[aDecoder decodeObjectForKey:@"pageNumber"] intValue];
self.path = [aDecoder decodeObjectForKey:@"path"];
self.array = [aDecoder decodeObjectForKey:@"array"];
}
}
您可以看到正在编码和解码的总共三种数据类型 - int、string、array。
希望这对您有所帮助。
关于objective-c - NSCoder - 使用多级嵌套数组对数组进行编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9343570/