我有一个mainObjectArray(NSMutableArray),它填充了自定义类的实例。每个实例本身就是一个数组,每个数组中的对象都是NSDates,NSStrings,BOOL以及包含类似对象的更多数组。
我无法确定的是,是否可以在
内部- (void)encodeWithCoder:(NSCoder *)encoder
方法,只是说出类似的话:
[encoder encodeWithObject:mainObjectArray];
或者必须分别编码每个实例中的每个对象?这会有点痛苦......
非常感谢您的帮助。
答案 0 :(得分:5)
只需在自定义类中实现编码和解码方法即可。那样做。一些样本,
- (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。
希望这有帮助。