gpt4 book ai didi

ios - 有没有办法强制异步 NSURLConnection 在后台调用 connectionDidFinishLoading?

转载 作者:行者123 更新时间:2023-11-29 03:08:25 24 4
gpt4 key购买 nike

我下载了在 UITableView 单元格内显示的背景图像。

直到 UITableView 停止滚动后才会显示图像。

我想以更快的方式显示下载的图像。例如,我想在 UITableView 开始减速时执行此操作。

为此,我需要知道下载何时完成,并且在调用 connectionDidFinishLoading 之前我无法知道。 UITableView 移动时不会调用此方法。 (或者可能在接口(interface)繁忙时)

是否有可能在 UI 繁忙时以某种方式让它调用 connectionDidFinishLoading,同步使用 NSURLConnection?

最佳答案

这是你要做的:

  • 让您的网络连接更新 Core Data 中的对象。
  • 在 UITableView 或 Controller 周围设置一个 NSFetchedResultsController 来查询该类型的对象,例如imagesarticle 上收集对象。
  • 将 UiTableView 数据源绑定(bind)到 NSFetchedResultsController - 即表的部分和行来自结果。

此时,表格 View 应在您滚动时成功显示所有旧/当前项目。现在,...

  • 当您完成下载(可能是与文章相关的图片)时,以某种方式更新 CoreData 中的对象——例如只需插入 imagearticles 上收藏称为 images -- 结果 Controller 将根据您设置的初始谓词“看到”的内容。如果新对象(文章、图像等)的索引路径当前在 tableView 中可见,则 tableView 和结果 Controller 将为您散列它。

此时您实际上应该完成了,新图像可能会显示出来。结果 Controller 是 KVO 为您观察。您确实需要对结果 Controller 采取行动以获取更改,但那里有很多示例,例如 this (并且这些方法之间存在很大差异)。如果没有,您可能需要做一些无害的事情 - 例如出现新文章时滚动到顶部;避免调用 reloadData除非你绝对必须。

更新

如果您只是想强制 NSURLConnection 同步或异步操作,那么您所要做的就是使用 + (NSURLConnection *)connectionWithRequest:(NSURLRequest *)request delegate:(id < NSURLConnectionDelegate >)delegate 设置 NSURLConnection (或相关的初始值设定项)和 - (void)start而不是 + (NSData *)sendSynchronousRequest:(NSURLRequest *)request returningResponse:(NSURLResponse **)response error:(NSError **)error .第一种方法异步加载数据,而后者是同步的。

但是,既然你提到了 connectionDidFinishLoading ,看来您是在异步设置连接,不是吗?

关于ios - 有没有办法强制异步 NSURLConnection 在后台调用 connectionDidFinishLoading?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22510397/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com