我有一个表视图。我想向其中添加数据。我在网上冲浪,找到了一些示例代码。然而,他们中的许多人都在使用NSKeyedUnarchiver (编码、解码)。为什么我们需要这样做?有什么特别的原因吗?
发布于 2012-08-01 19:26:40
这是在你的应用中保存和恢复数据的一种方式。有几种方法可以在iOS中存储和检索数据:核心数据、SQLite、plists。NSKeyedArchiver是一个易于理解和易于使用的数据持久化类。我想说,你经常看到它的原因是因为它对初学者来说是一个简单的概念。其他数据持久化方法不太容易理解。
发布于 2012-08-01 19:18:49
当您有关于某个类的问题时,最好查看Apple文档。这是直接从文档中获取的,我希望它能为您澄清一些事情:
NSKeyedArchiver是NSCoder的一个具体子类,它提供了一种将对象(和标量值)编码为可存储在文件中的独立于体系结构的格式的方法。当您存档一组对象时,每个对象的类信息和实例变量都会写入存档中。NSKeyedArchiver的配套类NSKeyedUnarchiver对存档中的数据进行解码,并创建一组与原始对象集等效的对象。
键控归档与非键控归档的不同之处在于,编码到归档中的所有对象和值都有给定的名称或键。在解码非键控归档文件时,必须以与编码相同的顺序解码值。在解码键控归档文件时,因为值是按名称请求的,所以值可能会被无序解码或根本不解码。因此,键控归档为向前和向后兼容性提供了更好的支持。
赋予编码值的键必须仅在当前编码对象的范围内是唯一的。键控归档是分层的,因此对象A用来编码其实例变量的键不会与对象B使用的键冲突,即使A和B是同一个类的实例。然而,在单个对象中,子类使用的键可能与其超类中使用的键冲突。
NSArchiver对象可以将存档数据写入您提供的文件或可变数据对象(NSMutableData的实例)。
https://stackoverflow.com/questions/11758053
复制相似问题