将NSMutableArray保存到磁盘

Tal*_*ode 7 arrays serialization objective-c

我有一个NSMutableArray,它包含Person类型的对象(NSString,NSString,int)我正在寻找一种简单的方法将此数组保存到光盘并稍后再次加载它.

我读了很多关于序列化但我从来没有这样做过.也许这对我来说不是最简单的方式.

Mar*_*eau 10

第一步是让Person类实现NSCoding协议.基本策略是实现两个方法来序列化和取消序列化您希望在会话之间保留的每个对象的实例变量.

#pragma mark NSCoding Protocol

- (void)encodeWithCoder:(NSCoder *)encoder;
{
    [encoder encodeObject:[self foo] forKey:@"foo"];
    [encoder encodeDouble:[self bar] forKey:@"bar"];
}

- (id)initWithCoder:(NSCoder *)decoder;
{
    if ( ![super init] )
        return nil;

    [self setFoo:[decoder decodeObjectForKey:@"foo"]];
    [self setBar:[decoder decodeDoubleForKey:@"bar"]];

    return self;
}
Run Code Online (Sandbox Code Playgroud)

要将对象实际写入磁盘,您可以使用NSArray的writeToFile:方法,或者如果您想更清楚地了解它是如何完成的,请使用NSKeyedUnarchiver类.在这两种情况下,如果要在数据文件中包含其他项(例如文件格式编号),也可以将数组放入另一个数据结构(例如字典).