【问题标题】:iOS: Appending to an archiveiOS:附加到档案
【发布时间】:2011-06-27 19:52:32
【问题描述】:

谁能推荐一种使用 NSKeyArchiver 将数据附加到存档的内存高效方法?

我有一个数组,它收集对象并将它们作为内存缓存提供给应用程序。为了避免消耗越来越多的内存,我想经常将此数组存档到一个文件中,保留一个缓存文件(而不是创建单独的缓存文件)。

执行此操作的一种方法是将现有文件解压缩到 tempArray,而不是将现有数组中的项目添加到其中:

[tempArray addObjectsFromArray:array];

然后存档数组:

[NSKeyedArchiver archiveRootObject:tempArray toFile:file];

这种方法有其自身的目的,因为您必须在存档新数据之前将整个存档读取到内存中。

谁能推荐一个更优雅的解决方案?

【问题讨论】:

    标签: ios append nskeyedarchiver


    【解决方案1】:

    我认为这是不可能的,至少对于 NSKeyedArchiver。由于每个作用域层次结构中的键must be unique,如果不首先读取存档,就不可能保证这一点。如果您刚刚插入一个带有新存档对象的节点,并且该节点的密钥早先已存在于存档中,结果将是一个损坏的存档。

    显然,如果您编写了自己的 NSCoder 协议实现,您可以按照自己的喜好使其工作。然而,编写 NSCoder 并非易事。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-13
      • 2014-07-07
      • 1970-01-01
      • 1970-01-01
      • 2011-07-16
      • 2010-11-10
      • 2015-02-06
      • 1970-01-01
      相关资源
      最近更新 更多