存储大量图像数据的位置比NSUserDefaults更好

时间:2012-07-22 20:58:17

标签: ios nsuserdefaults

我使用NSUserDefaults通过编码存储图像数据。我知道它可以保存在Documents目录中,但如果内容太大,这将导致App Store拒绝,因为iCloud同步问题。它也可以保存在Cache目录中,但我保存的图像非常重要,我不希望在缓存清除时丢失它们。

我担心我的应用会因为NSUserDefaults大量使用数据存储而被拒绝 - 在离线环境中有没有其他方法可以解决这个问题?

3 个答案:

答案 0 :(得分:4)

NSUserDefaults不适合存储图像。您应该将这些存储在~/Library/Application Support下。由于您说您不希望对它们进行备份,因此您应该按照iOS App Programming Guide中的说明进行操作:

  

在iOS 5.1及更高版本中,将支持文件存储在/ Library / Application Support目录中,并使用setResourceValue:forKey:error:方法将NSURLIsExcludedFromBackupKey属性添加到相应的NSURL对象。 (如果您使用的是Core Foundation,请使用CFURLSetResourcePropertyForKey函数将kCFURLIsExcludedFromBackupKey键添加到CFURLRef对象。)应用此属性可防止将文件备份到iTunes或iCloud。如果您有大量支持文件,则可以将它们存储在自定义子目录中,并将扩展属性应用于该目录。

答案 1 :(得分:2)

我不能说拒绝,但NSUserDefaults几乎肯定是错误的。 (它意味着用户偏好数据。)

我建议您查看核心数据。

这是最近提出相同建议的论点:http://sealedabstract.com/code/you-should-use-core-data/

酷炫的报价:

  

如果要将超过3个对象保存到磁盘而不链接到CoreData.framework,那么你做错了。

希望有所帮助。

答案 2 :(得分:0)

this question的接受答案可能会有所帮助。

给出的主要观点是:

  

将文件放入Documents但标记它们以便不备份它们。有一个技术说明(QA1719),如何做到这一点。