iphone - 从应用程序将图片/图像存储在 SQLite DB 中是个好主意吗?

标签 iphone cocoa-touch sqlite

Stackoverflow 中的一些讨论表示,将图片存储在数据库中是一个坏主意(因为随着时间的推移,图像数量会变大并可能导致应用程序崩溃)。所以,要么

a.图像可以存储在 iPhone 本身中,并且只有其位置可以存储在数据库中 潜在问题:图像可能会被删除(在应用程序之外)并且应用程序下次可能无法加载它们

b.图像可以缩小到小尺寸(例如100*100像素)并存储在数据库中 潜在问题:如果图像缩小到仅 100x100 像素,尺寸会成为问题吗?

c.同时执行 (a) 和 (b)。因此,图像的小版本将存储在数据库中,然后在应用程序中检索并显示,而如果用户选择查看图像的原始版本(其概率很低),那么将获取该图像来自本地目录并显示。

请问您的建议?在我看来,(c)似乎是一个不错的选择,以防(a)提到了潜在的问题。

最佳答案

这实际上取决于图像的来源。它们是在用户安装应用程序后从互联网下载(或从用户的库/相机导入),还是从 App Store 与应用程序捆绑在一起?

如果正在下载/导入图像,最佳解决方案是按照 http://developer.apple.com/library/ios/#qa/qa1719/_index.html 中的建议将图像存储在文件系统中。

基本上,如果图像无法替换或重新创建,请将它们存储在 <Application_Home>/Documents 中目录并且不要设置Do Not Backup属性。这些项目将备份到 iCloud,即使应用程序从设备中删除,这些数据也会至少保留一段时间。 (请记住,您的用户没有无限的 iCloud 空间。请负责。)

-但是-

如果图像与应用程序捆绑在一起,最好的解决方案是将它们直接导入到您的 Xcode 项目中并从那里引用它们。这样您就知道即使用户删除并重新安装应用程序,它们也始终可用。

只要有可能,我绝对不会将图像数据存储在数据库中。在大多数情况下,都有更好、更有效的方法。

关于iphone - 从应用程序将图片/图像存储在 SQLite DB 中是个好主意吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10633450/

相关文章:

Android无法打开数据库文件错误

android - 如何在SQLite android数据库中搜索特定ID并返回其对象

ios - UIScrollview 有一个大 View ,还是 UITableview 有多个 View ?

ios - 如何快速组织uitableview的动态数量作为滑动页面

ios - 在 UIPageViewController 的 ViewController 中更新数据

ios - Cocos2d播放2个不同的背景音乐文件或循环播放效果

ios - 如何使用 FMDB 在 iOS 中使用整数参数查询 SQlite?

iphone - 在项目之间共享 iphone 和 mac 代码的最佳方式

ios - 工作灯 : get device token

iphone - 如何验证 NSData 是 PDF?