首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >URLSession委托方法不工作

URLSession委托方法不工作
EN

Stack Overflow用户
提问于 2018-03-21 09:57:46
回答 1查看 1.3K关注 0票数 1

我将从API中读取文件,但是它的大小等于1.6mb,需要花费大量的时间。我希望按部分阅读,当我创建我需要的数据时,我将停止接收数据。我试图使用一些委托方法,但它们不起作用。我不明白哪里出问题了?

我有下一个代码:

代码语言:javascript
复制
class ViewController: UIViewController, URLSessionTaskDelegate, URLSessionDelegate, URLSessionDataDelegate {

    var httpString = "hided"

    override func viewDidLoad() {
        super.viewDidLoad()
        getLogBinData()
    }

    func getLogBinData() {
        let session = URLSession(configuration: .default, delegate: self, delegateQueue: OperationQueue.main)
        if let url = URL(string: httpString + "log.bin") {
            var request = URLRequest(url: url)
            request.httpMethod = "GET"
            let task = session.dataTask(with: request)
            task.resume()
        }
    }

    func urlSession(_ session: URLSession, task: URLSessionTask, didSendBodyData bytesSent: Int64, totalBytesSent: Int64, totalBytesExpectedToSend: Int64) {
        print()
    }

    func urlSession(_ session: URLSession, dataTask: URLSessionDataTask, didReceive data: Data) {
        if dataTask.countOfBytesReceived >= 500 {
            print(dataTask.countOfBytesReceived)
        }
    }

    func urlSession(_ session: URLSession,
                    dataTask: URLSessionDataTask,
                    didReceive response: URLResponse,
                    completionHandler: @escaping (URLSession.ResponseDisposition) -> Void) {
        if dataTask.countOfBytesReceived >= 500 {
            print(dataTask.countOfBytesReceived)
        }
    }


}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-21 10:54:11

根据这条评论,我编辑了代码,它成功了。

代码语言:javascript
复制
class ViewController: UIViewController, URLSessionTaskDelegate, URLSessionDelegate, URLSessionDataDelegate {

    var httpString = "hided"

    override func viewDidLoad() {
        super.viewDidLoad()
        getLogBinData()
    }

    func getLogBinData() {
        let session = URLSession(configuration: .default, delegate: self, delegateQueue: OperationQueue.main)
        if let url = URL(string: httpString + "log.bin") {
            var request = URLRequest(url: url)
            request.httpMethod = "GET"
            let task = session.dataTask(with: request)
            task.resume()
        }
    }

    func urlSession(_ session: URLSession, dataTask: URLSessionDataTask, didReceive data: Data) {
        if dataTask.countOfBytesReceived >= 500 {
            print(dataTask.countOfBytesReceived)
        }
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49403166

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档