2016-01-24 38 views
2

我使用下面做iOS应用数据备份NSKeyedArchiver是否覆盖以前的存档值?

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

基于这里的苹果文档上 -

我很好奇这里有一个潜在的愚蠢问题 - 每次你做一个新的保存时,以前的存档会被删除吗?

问题

  • 当调用NSKeyedArchiver.archiveRootObject()不新的存档覆盖以前的归档值?
  • 如果它不覆盖旧值,您是否需要删除旧值?

这里是删除的NSKeyedArchiver有用的参考值

+1

这里是一个链接,说答案是肯定的。 http://stackoverflow.com/questions/3993553/does-nskeyedarchiver-overwrite-the-entire-file-every-time-you-archive –

回答

2

的NSKeyedArchiver是不负责覆盖前一个对象。它只是将youObject转换成NSData,反之亦然。因为'自定义对象'不能保存到NSUserDefaults

additionay,以overrite数据,你应该做this.i.e

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

删除数据:

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

嗯。如果它没有被覆盖,我们是否需要删除旧值? –