加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

swift – 使用dataTask返回值的函数

发布时间:2020-12-14 05:47:30 所属栏目:百科 来源:网络整理
导读:我不想检查我的url statusCode是否等于200,如果statusCode等于200,我创建了一个返回布尔函数的函数,我正在使用dataTask,但我不知道如何返回一个值: class func checkUrl(urlString: String) - Bool{ let urlPath: String = urlString var url: NSURL = NSUR
我不想检查我的url statusCode是否等于200,如果statusCode等于200,我创建了一个返回布尔函数的函数,我正在使用dataTask,但我不知道如何返回一个值:
class func checkUrl(urlString: String) -> Bool{

    let urlPath: String = urlString
    var url: NSURL = NSURL(string: urlPath)!
    var request: NSURLRequest = NSURLRequest(url: url as URL)
    var response: URLResponse?

    let session = Foundation.URLSession.shared


    var task = session.dataTask(with: request as URLRequest,completionHandler: {(data,response,error) in
        if let error = error {
            print(error)
        }

        if let data = data{
            print("data =(data)")
        }
        if let response = response {
            print("url = (response.url!)")
            print("response = (response)")
            let httpResponse = response as! HTTPURLResponse
            print("response code = (httpResponse.statusCode)")

            if httpResponse.statusCode == 200{
                return true
            } else {
                return false
            }
        }
    })
    task.resume()
}

if else中的返回值返回错误:

Unexpected non-void return value in void function

为了返回值,你应该使用块.尝试声明你的功能如下:
class func checkUrl(urlString: String,finished: ((isSuccess: Bool)->Void) {

    let urlPath: String = urlString
    var url: NSURL = NSURL(string: urlPath)!
    var request: NSURLRequest = NSURLRequest(url: url as URL)
    var response: URLResponse?

    let session = Foundation.URLSession.shared


    var task = session.dataTask(with: request as URLRequest,error) in
        if let error = error {
            print(error)
        }

        if let data = data{
            print("data =(data)")
        }
        if let response = response {
            print("url = (response.url!)")
            print("response = (response)")
            let httpResponse = response as! HTTPURLResponse
            print("response code = (httpResponse.statusCode)")

            if httpResponse.statusCode == 200{
                finished(isSuccess: true)                
            } else {
                finished(isSuccess: false) 
            }
        }
    })
    task.resume()
}

然后像这样调用它:

checkUrl("http://myBestURL.com",finished { isSuccess in
// Handle logic after return here
})

希望这会有所帮助.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读