繁体   English   中英

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

[英]Better location for storing lots of image data than NSUserDefaults

我使用NSUserDefaults通过编码存储图像数据。 我知道它可以保存在Documents目录中,但是如果内容太大,则会由于iCloud同步问题而导致App Store拒绝。 也可以将其保存在Cache目录中,但是我保存的图像非常重要,并且我不想在清除缓存后丢失它们。

我担心我的应用会因为大量使用NSUserDefaults进行数据存储而被拒绝-在离线环境中还有其他方法可以处理此问题吗?

NSUserDefaults不适合存储图像。 您应该将它们存储在~/Library/Application Support 由于您是说不想备份它们,因此应遵循iOS App编程指南中的说明

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

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

我建议您研究核心数据。

这是最近的一个暗示相同的论点: http : //sealedabstract.com/code/you-should-use-core-data/

很酷的报价:

如果您要在磁盘上保存3个以上的对象而不链接到CoreData.framework,则说明您做错了。

希望能有所帮助。

对此问题的公认答案可能会有所帮助。

给您的问题要点:

将文件放入“文档”中,但对其进行标记,以便不备份它们。 有关如何执行此操作的技术说明(QA1719)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM