0

我有一个表格视图。我想向其中添加数据。我已经上网并找到了一些示例代码。然而,他们中的许多人都在使用 NSKeyedUnarchiver (编码、解码)。为什么我们需要这样做?有什么具体原因吗?

4

2 回答 2

2

当您对某个类有疑问时,最好查看 Apple 文档。这直接来自文档,我希望它能为您清除一些东西:

NSKeyedArchiver 是 NSCoder 的一个具体子类,它提供了一种将对象(和标量值)编码为可以存储在文件中的与体系结构无关的格式的方法。当您归档一组对象时,每个对象的类信息和实例变量都会写入归档。NSKeyedArchiver 的伴生类 NSKeyedUnarchiver 解码存档中的数据并创建一组与原始集合等效的对象。

键控存档与非键控存档的不同之处在于,编码到存档中的所有对象和值都是给定的名称或键。在解码非键控档案时,必须以与编码相同的顺序对值进行解码。在对键控存档进行解码时,由于值是按名称请求的,因此值可能被解码为乱序或根本不解码。因此,键控档案为向前和向后兼容性提供了更好的支持。

赋予编码值的键必须仅在当前正在编码的对象范围内是唯一的。带键存档是分层的,因此对象 A 用于对其实例变量进行编码的键与对象 B 使用的键不冲突,即使 A 和 B 是同一类的实例。然而,在单个对象中,子类使用的键可能与其超类中使用的键发生冲突。

NSArchiver 对象可以将归档数据写入文件或您提供的可变数据对象(NSMutableData 的一个实例)。

自己看更多

于 2012-08-01T11:18:48.950 回答
2

这是一种在应用程序中保存和恢复数据的方法。在 iOS 中有几种存储和检索数据的方法;核心数据、SQLite、plists。NSKeyedArchiver是一个易于理解且易于使用的数据持久化类。我想说你看到它的原因是因为它对于初学者来说是一个简单的概念。其他数据持久性方法不太容易理解。

于 2012-08-01T11:26:40.180 回答