![](/img/trans.png)
[英]For storing a growing collection of data records, is NSUserDefaults or CoreData better?
[英]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,则说明您做错了。
希望能有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.