【问题标题】:Does NSKeyedArchiver overwrite the previous archive value?NSKeyedArchiver 会覆盖以前的存档值吗?
【发布时间】:2016-04-30 21:03:18
【问题描述】:

我正在使用以下做IOS App数据备份

  • NSKeyedArchiver.archiveRootObject()
  • NSKeyedUnarchiver.unarchiveObjectWithFile()

基于此处的 Apple 文档 -

我很好奇这里有一个可能很愚蠢的问题 - 每次您进行新的保存时,以前的存档都会被删除吗?

问题

  • 调用 NSKeyedArchiver.archiveRootObject() 时,新存档是否会覆盖之前的存档值?
  • 如果没有覆盖旧值,是否需要删除旧值?

这是删除 NSKeyedArchiver 值的有用参考

【问题讨论】:

标签: ios nskeyedarchiver nskeyedunarchiver


【解决方案1】:

NSKeyedArchiver 不负责覆盖 先前的对象。它只是将 youObject 转换为 NSData ,反之亦然。因为,“自定义对象”无法保存到 NSUserDefaults

另外,要覆盖数据,您应该这样做。即

 [userDefaults setObject:data forKey:identifier];
 [userDefaults synchronize];

删除数据:

[[NSUserDefaults standardUserDefaults] removeObjectForKey:identifier];
[[NSUserDefaults standardUserDefaults] synchronize];

【讨论】:

  • 嗯。如果没有被覆盖,我们是否需要删除旧值?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-12
  • 1970-01-01
  • 2013-07-26
相关资源
最近更新 更多