有三种方法可以持续写入我在iOS中的设备:
Apple提供了一种机制来阻止#2的iCloud备份,即
- (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL
我使用NSUserDefaults存储三张图片,但要遵守iOS数据存储指南 - 如何使用NSUserDefaults阻止iCloud备份?
这个问题已在SO上多次提出,但目前还没有明确的全面答案。
是否有这样的功能或者我必须使用方法#2更改存储图像。我希望有一些方便的东西:
- (BOOL)addSkipBackAttributeForStandardUserDefaultsKey:(NSString *)
存在。
答案 0 :(得分:8)
这没有机制。 NSUserDefaults
不用于保存应用数据。它可以保存应用程序所需的用户首选项和其他设置,但不是作为完整的数据持久性系统。
说“... [Apple]的存储数据机制不能遵守它自己的指南”是不准确的,因为这不是这个API的目的。在这种情况下,具体来说,如果不应该备份这些图像,那么绝对证明用户默认是存储它们的错误位置。
您应该将图像保存到文件中。如果你有UIImage
,这很简单。 UIImage
符合NSCoding
,因此很容易转换为NSData
/从NSData
转换。 {{1}}包括读取/写入文件对象的便捷方法。如果文件名可能更改,您可以合理地将文件名设置为用户默认值。如果文件名已提前知道且无法更改,则没有理由存储它们。