猿问

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

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


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


我遇到了有关创建Image模型对象并与模型对象创建一对一关系的设计建议User(因此,除非需要,否则不会调用关联的Image对象)。但是,我不确定如何实际存储图像以及这在性能方面是否可能致命。


我会很感激任何尝试此方法的人所提供的有关方法和陷阱的建议。


忽然笑
浏览 420回答 3
3回答

炎炎设计

在核心数据中存储图像数据的规则如下:<100 kb的存储在相关实体中(人员,地址或其他)。<1 mb存储在关系的另一端的单独实体中,以避免性能问题。1 mb的磁盘存储,并引用Core Data存储中的路径。您可以使用可转换数据类型将NSImage直接存储到Core Data中。实际上,您可以使用可转换数据类型来存储实现NSCoder协议的任何内容。我个人不会将其转换为CGImageRef,因为那样会丢失很多信息。

动漫人物

陷阱:您最终可能会遇到难以处理的庞大SQLite数据库。您是否真的要让用户一步将一个MB的文件上传到服务器?如果蜂窝连接断开几秒钟,您该怎么办?我认为如果您使用Core Data来管理图片及其上传状态(上传:是或否)会更好。这样,您可以在适合应用程序工作流程的情况下上传图像。好的,由于连接很多,它将持续更长的时间。但是我认为这是一种更清洁的方法。当您想到iTunes时,谈到备份:无论如何,本地iPhone的“文档”文件夹都已同步。
随时随地看视频慕课网APP

相关分类

iOS
我要回答