首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >核心数据存储图像(iPhone)

核心数据存储图像(iPhone)
EN

Stack Overflow用户
提问于 2010-01-18 23:41:47
回答 4查看 25.7K关注 0票数 46

我有一个应用程序,我允许用户为他们的帐户添加图像。

我想知道如何使用核心数据存储图像(从相机或照片库获得),因为我可能为用户提供备份工具,并希望将图像数据传输到服务器。

我遇到了这样的设计建议:创建Image模型对象并与User模型对象创建1到1的关系(除非需要,否则关联的图像对象不会被调用)。然而,我不确定如何实际存储映像,以及从性能上看,这是否可能是致命的。

我很感谢任何试图这样做的人就这一做法和陷阱提出任何建议。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-01-20 01:10:21

在核心数据中存储图像数据的规则如下:

  • < 100 kb存储在相关实体(person,address,不管怎样)中。
  • <1MB存储在关系另一端的单独实体中,以避免性能问题。
  • 1 mb存储在磁盘上,并引用核心数据存储中的路径。

您可以使用可转换数据类型将NSImage直接存储到核心数据中。实际上,您可以使用可转换的数据类型来存储实现NSCoder协议的任何内容。

就我个人而言,我不会将其转换为CGImageRef,因为这样可能会丢失大量信息。

票数 84
EN

Stack Overflow用户

发布于 2012-07-02 08:15:42

这个问题提出至今已过了一段时间,但我想分享一下我在这个问题上的经验。

如果图像的数量不受限制,我建议您不要将图像存储在DB中。您应该记住,有一天,您将添加一个新版本的数据模型,您将不得不从旧的DB迁移到一个新的应用程序更新。这需要时间。数据库文件越大,迁移所需的时间就越长。

如果要在DB中存储图像,请确保没有在application: didFinishLaunchingWithOptions:方法UIApplicationDelegate中添加持久存储。如果在XX秒内无法完成迁移,iOS将终止您的应用程序。

票数 30
EN

Stack Overflow用户

发布于 2010-01-19 00:08:46

陷阱:最终你可能会很大,很难处理sqlite数据库。您真的想让用户一步一步地上传几个MB文件到服务器上吗?如果细胞连接中断了几秒钟,你会怎么做?

我认为,如果您使用核心数据来管理您的图像和它们的上传状态(上传:是或否),会更好。这样,您可以上传图像,当它适合您的应用程序工作流程。好的,它会持续更长的时间,因为有很多连接。但这是个更干净的方法我想..。

当您想到iTunes时,当谈到备份时:您的本地iPhone‘Document’文件夹无论如何都是同步的。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2090028

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档