将进度从 NSURLSession 发送到 ViewController [swift - iOS]

Posted

技术标签:

【中文标题】将进度从 NSURLSession 发送到 ViewController [swift - iOS]【英文标题】:Send Progress from NSURLSession to ViewController [swift - iOS] 【发布时间】:2016-02-07 10:01:17 【问题描述】:

我正在开发一个在后台处理一些下载的应用程序。我将文件移动到文档目录并以原始名称保存(使用downloadTask.originalRequest?.URL!.pathExtension)。到目前为止一切顺利。

使用

URLSession(_:downloadTask:didWriteData:totalBytesWritten:totalBytesExpectedToWrite:) 

我可以在下载时在控制台中打印出进度。但是,如果我在手机上使用该应用程序,这对我没有帮助。我期望做的是在初始化下载的视图中调用一个函数来更新进度条。但我不知道怎么称呼它。

有谁知道我可以从哪个UIViewController(实际上大部分时间是TableCellViewController)找到我开始下载以及如何将进度发送到ViewController的函数?

【问题讨论】:

保存您的单元格索引路径、下载会话和任务标识符 【参考方案1】:

我想告诉你一个关于这个问题的好教程。 NSURLSession Tutorial

【讨论】:

谢谢,我将尝试以这种方式实现它。 我花了整整一个晚上。但是:它有效,我想我现在比以前更了解代表了。非常感谢! 如果我有时间……这是我正在做的一个“只是为了好玩”的项目。在我的正常工作中,我与编码没有任何关系(可能只是一点点 python 或 VB Excel 宏——通常的业务 casper 的东西) 去年,我在没有编程经验的情况下开始学习 Swift。我是等级来帮助你的。你可以在 Twitter 上和我聊天。相同的 ID @Lanaya_HSIEH。【参考方案2】:

委托常用于以下情况

当一个类需要向另一个类传达一些信息时 当一个类想要允许另一个类自定义它时 这些类不需要事先了解彼此的任何信息,除非委托类符合所需的协议。

在下面的文章中,您可以了解如何在 Objective-C 和 Swift 2.0 中创建委托。

How do I create delegates in Objective-C?

【讨论】:

如果对你有好处,我可以用一个例子构建一个项目,但如果你想要这个,请告诉我。 谢谢,我实际上将下载任务委托给下载管理器类。我缺少的是从委托人返回给委托人的信息。我将尝试像在 Lanaya 链接的教程中那样实现它。

以上是关于将进度从 NSURLSession 发送到 ViewController [swift - iOS]的主要内容,如果未能解决你的问题,请参考以下文章

NSURLSession 下载任务 - 进度条问题

使用 NSURLSession 时无法调用 didReceiveData

NSURLSession - 请求超时

获取所有视图控制器中的 NSURLSession 下载进度

更改视图控制器后如何更新 UIProgressView 以显示 NSUrlSession 下载进度

NSURLSession 从 Servlet 获取响应