NSCoder - 使用多级嵌套数组编码数组

时间:2012-02-18 17:46:51

标签: objective-c ios xcode saving-data nscoder

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

我无法确定的是,是否可以在

内部
- (void)encodeWithCoder:(NSCoder *)encoder 

方法,只是说出类似的话:

[encoder encodeWithObject:mainObjectArray];

或者必须分别编码每个实例中的每个对象?这会有点痛苦......

非常感谢您的帮助。

1 个答案:

答案 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。

希望这有帮助。