将图像存储在sqlite中或只是对它的引用?

Luk*_*kas 3 core-data objective-c uiimage nsdata ios

我使用coredata创建了几个应用程序,我在sqlite中存储图像,但在某个地方我发现它很糟糕.我搜索了网,但我找到的只是这个建议:

  • 图像大小<100kb与相关数据存储在同一个表中
  • 图像大小<1mb存储在通过关系附加的单独表中,以避免不必要的加载
  • 图像大小> 1mb存储在磁盘上并在Core Data中引用它

所以我的问题是:在sqlite db中保存图像的优点和缺点是什么NSData,并且在图像保存在文件系统中时只存储图像的引用?

一二三*_*一二三 7

Apple在其核心数据性能指南中提供了有关此主题的一些指导.一般来说,虽然SQLite可以很好地扩展,并且可以轻松处理大小为几千兆字节的数据库,但是大型二进制blob不可查询或可索引,并且几乎不会返回数据库的大小.

如果您的目标是iOS 4及更高版本,则可以在包含此类数据的属性上设置" 允许外部二进制数据存储 "标记,Core Data会自动将它们单独存储在文件系统上(如果认为合适),并且自动管理数据存储中该数据的链接.