9

最近,我正在学习 NSKeyedArchiver 和 NSKeyedUnarchiver。我发现有三种方法可以归档数组,我正试图找出差异。

1.使用archiveRootObject:toFile:

    [NSKeyedArchiver archiveRootObject:testArray toFile:filePath];

2.从文件中获取数据archivedDataWithRootObject:并将其写入文件

    NSData *data = [NSKeyedArchiver archivedDataWithRootObject:testArray];
    [data writeToFile:filePath atomically:YES];

3.使用encodeObject:获取数据

    NSMutableData *data = [NSMutableData data];
    NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
    [archiver encodeObject:testArray forKey:@"testArray"];
    [archiver finishEncoding];
    [data writeToFile:path atomically:YES];

经过测试,我发现上述所有方法都可以正常工作并将相同的内容写入文件。

Q1:以上所有方式有什么区别?

Q2:我可以以第三种方式使用 NSData 吗?

4

1 回答 1

5

第一个不会让您选择如何处理数据。它将转到一个文件。例如,我使用第二种方式通过网络连接发送数据。它更灵活。第三种方式做同样的事情,除了你可以把单个对象放进去。我不确定它是否可以与现有的数组一起使用,但它可能会。它更加灵活,因此您无需准备好数组或字典。

差不多就是这样。这一切都与便利性与灵活性有关。

于 2013-04-18T07:50:03.813 回答