objective-c - 将 NSMutableArray 保存到磁盘

标签 objective-c arrays serialization

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

我读了很多关于序列化的文章,但我从来没有这样做过。也许这对我来说毕竟不是最简单的方法。

最佳答案

第一步是让你的 Person 类实现 NSCoding 协议(protocol)。基本策略是实现两种方法来序列化和反序列化您希望在 session 之间保留的每个对象实例变量。

#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;
}

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

关于objective-c - 将 NSMutableArray 保存到磁盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/819671/

相关文章:

java - 完全禁用 Java 反序列化

java - readObject() 中的 ObjectInputStream 阻塞

ios - Restkit 为两个 TableView Controller 获取不同的数据

iphone - stringWithContentsOfURL 和 HTTP 500 错误代码

java - Java中如何将数组解析为对象

java - 查找数组中的最小元素

iOS8 在 [GAIDataStore 保存] 中卡住

objective-c - 获取一对多核心数据关系第一次返回正确的对象,但其他时间返回空集

javascript - 如何在 React 中设置嵌套数组的状态(已编辑)

c# - 使用 DataContract 类的 BinaryFormatter 有问题吗?