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

Cha*_*arl 3 xcode objective-c saving-data nscoder ios

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

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

- (void)encodeWithCoder:(NSCoder *)encoder 
Run Code Online (Sandbox Code Playgroud)

方法,只是说这样的话:

[encoder encodeWithObject:mainObjectArray];
Run Code Online (Sandbox Code Playgroud)

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

非常感谢您的帮助.

coc*_*ali 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"];
    }
}
Run Code Online (Sandbox Code Playgroud)

您可以看到三种数据类型被编码和解码 - int,string,array.

希望这可以帮助.