将图像添加到 Core Data 需要很长时间

Posted

技术标签:

【中文标题】将图像添加到 Core Data 需要很长时间【英文标题】:Adding images to Core Data takes a long time 【发布时间】:2017-06-07 13:26:34 【问题描述】:

如何提高将图像添加到核心数据的方式?

【问题讨论】:

从“占位符”图像开始。使用后台线程下载过程。每次图像下载完成后,更新 UI 并保存图像数据。 另外,不要在 Core Data 中存储二进制数据。将图像存储在磁盘上并将 路径 存储在 Core Data 中。 这是什么让它变慢了? 不要delete and repost。你会被禁止。 这一行:NSData *imageData = [[NSData alloc] initWithContentsOfURL: [NSURL URLWithString: str] options:0 error:&error]; 是“放慢速度”的原因。每次在循环中执行该行时,它都会坐在那里等待文件数据下载。根据图像大小和连接速度等,每张图像可能需要数秒(甚至数分钟)。首先搜索ios sdk async download 【参考方案1】:

将“数据”或图像保存在核心数据持久性中是一个非常糟糕的主意。另外我认为您正在后台队列中运行此代码,如果不是那么那也是一件坏事。但话又说回来,将图像或数据保存到核心数据持久存储中是一个非常糟糕的主意,应尽可能避免。

作为替代,你可以这样做 -

    将图像保存在本地目录中,并带有路径和唯一的 文件名。 将文件名保存在核心数据中,路径除外。 下次检索图像时,从数据存储中获取文件名。 将文件名与整个路径附加到文件夹。检索图像。

这是一种更高效、更好的图像存储方式。

【讨论】:

我目前将图像存储为二进制数据,就像在实际的 mysql 数据库中一样,这是什么让它变慢了? 这可能是并且现在是一个非常糟糕的做法,它会减慢应用程序的速度,并且可能稍后随着应用程序处理越来越多的图像,问题将开始复杂化。改变架构是我能给你的最好的解决方案。 这是我的回答,您删除而不是接受。这一点都不体贴。

以上是关于将图像添加到 Core Data 需要很长时间的主要内容,如果未能解决你的问题,请参考以下文章

如何更新 UI 以显示 Core Data 长时间运行的进程?

来自 url 的 UIImage 需要很长时间才能快速加载

将逻辑回归模型拟合到 MNIST 数据需要很长时间

UIView 需要很长时间才能显示

ABPeoplePickerNavigationController 保存较大的图像需要很长时间

关闭相机并返回应用程序需要很长时间