防止来自iCloud Backup的NSUserDefaults

时间:2014-11-17 21:06:29

标签: ios nsuserdefaults icloud

有三种方法可以持续写入我在iOS中的设备:

  1. NSUserDefaults
  2. 自定义对象 - 存档并写入NSDocuments中的路径
  3. SQLite的
  4. Apple提供了一种机制来阻止#2的iCloud备份,即

    - (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL

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

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

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

    - (BOOL)addSkipBackAttributeForStandardUserDefaultsKey:(NSString *)
    

    存在。

1 个答案:

答案 0 :(得分:8)

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

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

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