可以在 coredata 中存储 jpg 图像使 iCloud App 更容易
Posted
技术标签:
【中文标题】可以在 coredata 中存储 jpg 图像使 iCloud App 更容易【英文标题】:Could storing jpg images in coredata make iCloud App easier 【发布时间】:2012-05-31 20:08:51 【问题描述】:我有一个在 iCloud 中使用 CoreData 的 ios 5.1 应用程序。 用户也可以拍照并将其保存在 iCloud 上。 目前我只是在一个实体中保存一个属性图片YES或NO,它应该代表拍照事件,假设它是一种日记。
如果是,我可以计算路径并检索图像。实际保存了三张jpg图片,一张用于UITableCell的小图,一张用于iPhone的中图,一张用于iPad的大图。 最大大小约为 100kb。
一切正常,但我不得不在应用程序中加入一些繁重的逻辑,例如决定图像是否进入 iCloud,以及在删除的情况下,图像是否也可以被删除或移动到本地。
在我的开发生涯中,我从未选择将图像或二进制文件保存在数据库中,但这次我在想,如果在后台发生的 CoreData 同步可以使我的应用程序更可靠,并让我删除一些代码行。这个想法是为实体添加三个属性,或者可能是为了延迟问题,在另一个实体中根据需要加载。
谢谢
【问题讨论】:
【参考方案1】:我绝对不会在数据库中存储任何图像数据。我有一个在数据库中存储缩略图的应用程序,效果很好。当我尝试迁移到 iCloud 时,我注意到由于图像数据,同步时间显着增加。如果您的数据库有多个条目,我会说几秒钟到几分钟。我现在将所有内容存储在文件夹中并测试不同的方法,以允许用户决定他们希望或不希望将哪些图像保存在云中。
如果您的数据输入保持较小,我认为仍然值得一试,但要知道
【讨论】:
【参考方案2】:我认为至少将小图像存储在数据库中是有意义的。这应该是非常有效的,不会过于依赖网络,而且 - 最重要的是 - 不会使 iCloud 存储变得太大。
Apple 非常坚持 iCloud 中“负责任的”数据存储。请参阅 iOS 编程指南中的“Being a Responsible iCloud App”部分。那里说
利用 iCloud 存储功能的应用在存储数据时应负责任地行事。每个用户帐户中的可用空间有限并且由所有应用共享。
因此,我会避免在您的 iCloud 核心数据存储中存储大图像。
【讨论】:
以上是关于可以在 coredata 中存储 jpg 图像使 iCloud App 更容易的主要内容,如果未能解决你的问题,请参考以下文章
存储 UIImages 的持久数组 - CoreData 还是在磁盘上?
如何在AWS DynamoDB中存储图像配置文件(jpg文件)和PDF文档?