防止来自iCloud Backup的NSUserDefaults

Sea*_*Dev 3 nsuserdefaults ios icloud

在我所知道的iOS中,有三种持久写入设备的方法:

  1. NSUserDefaults的
  2. 自定义对象 - 存档并写入NSDocuments中的PATH
  3. SQLite的

Apple提供了一种机制来阻止#2的iCloud备份

- (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL

我使用NSUserDefaults来存储三个图像,但要遵守iOS数据存储指南 - 如何使用NSUserDefaults阻止iCloud备份?

这个问题已在SO上多次提出,但目前还没有明确的综合答案.

是否有这样的功能或者我必须使用方法#2更改存储图像.我希望有一些方便的东西:

- (BOOL)addSkipBackAttributeForStandardUserDefaultsKey:(NSString *)
Run Code Online (Sandbox Code Playgroud)

存在.

Tom*_*ton 8

这没有机制.NSUserDefaults不用于保存应用数据.它可以保存用户首选项和应用程序所需的其他设置,但不能用作完整的数据持久性系统.

"...... [Apple]存储数据的机制不能遵守它自己的指南"是不准确的,因为这不是这个API的目的.在这种情况下,具体而言,如果不应备份这些图像,则绝对证明用户默认是存储它们的错误位置.

您应该将图像保存到文件.如果你有UIImage,这很简单.UIImage符合NSCoding,所以很容易转换为/从NSData.并NSData包括读取/写入文件对象的便捷方法.如果文件名可能更改,您可以合理地将文件名设置为用户默认值.如果文件名已提前知道且无法更改,则没有理由存储它们.

  • 我写这篇文章是为了回答一个关于防止数据被备份到 iCloud 的问题,而不是写一篇关于如何保存数据的一般论文。在这种情况下,应将数据写入文件,因为 ** 这就是防止将数据备份到 iCloud 的方式**。 (2认同)