将图像添加到 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 长时间运行的进程?