可以在 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 更容易的主要内容,如果未能解决你的问题,请参考以下文章

从 CoreData 检索的 TableView 上的图像

将图像直接存储在数据库中还是作为base64数据存储?

存储 UIImages 的持久数组 - CoreData 还是在磁盘上?

如何在AWS DynamoDB中存储图像配置文件(jpg文件)和PDF文档?

从 Core Data 加载图像使 NavigationView 过渡变得跳跃

使用内置 CoreData 选项将 blob 存储在外部位置