NSKeyedArchiver 是否会覆盖以前的存档值?
Does NSKeyedArchiver overwrite the previous archive value?
我正在使用以下工具进行 IOS 应用程序数据备份
- NSKeyedArchiver.archiveRootObject()
- NSKeyedUnarchiver.unarchiveObjectWithFile()
基于此处的 Apple 文档 -
我很好奇这里有一个可能很愚蠢的问题 - 每次进行新保存时是否都会删除以前的存档?
问题
- 当调用 NSKeyedArchiver.archiveRootObject() 时,新存档会覆盖以前的存档值吗?
- 如果没有覆盖旧值,是否需要删除旧值?
这里有一个关于删除 NSKeyedArchiver 值的有用参考
- stack overflow - Deleting files archived with NSCoding
NSKeyedArchiver 不负责覆盖 之前的对象。它只是将 youObject 转换为 NSData ,反之亦然。因为,'Custom Object' 无法保存到 NSUserDefaults。
此外,要覆盖您应该做的数据 this.i.e
[userDefaults setObject:data forKey:identifier];
[userDefaults synchronize];
删除数据:
[[NSUserDefaults standardUserDefaults] removeObjectForKey:identifier];
[[NSUserDefaults standardUserDefaults] synchronize];
我正在使用以下工具进行 IOS 应用程序数据备份
- NSKeyedArchiver.archiveRootObject()
- NSKeyedUnarchiver.unarchiveObjectWithFile()
基于此处的 Apple 文档 -
我很好奇这里有一个可能很愚蠢的问题 - 每次进行新保存时是否都会删除以前的存档?
问题
- 当调用 NSKeyedArchiver.archiveRootObject() 时,新存档会覆盖以前的存档值吗?
- 如果没有覆盖旧值,是否需要删除旧值?
这里有一个关于删除 NSKeyedArchiver 值的有用参考
- stack overflow - Deleting files archived with NSCoding
NSKeyedArchiver 不负责覆盖 之前的对象。它只是将 youObject 转换为 NSData ,反之亦然。因为,'Custom Object' 无法保存到 NSUserDefaults。
此外,要覆盖您应该做的数据 this.i.e
[userDefaults setObject:data forKey:identifier];
[userDefaults synchronize];
删除数据:
[[NSUserDefaults standardUserDefaults] removeObjectForKey:identifier];
[[NSUserDefaults standardUserDefaults] synchronize];