4

我有一个 mainObjectArray (NSMutableArray),其中填充了自定义类的实例。每个实例本身就是一个数组,每个数组中的对象是 NSDates、NSStrings、BOOL 以及更多包含类似对象的数组。

我无法确定的是,在内部是否有可能

- (void)encodeWithCoder:(NSCoder *)encoder 

方法,就这么说吧:

[encoder encodeWithObject:mainObjectArray];

还是必须分别对每个实例中的每个对象进行编码?这会有点痛...

您的帮助将不胜感激。

4

1 回答 1

6

只需在您的自定义类中实现编码和解码方法。那会做的。一些样品,

- (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。

希望这可以帮助。

于 2012-02-18T18:03:33.297 回答