swift3获取不可变值的初始化';任务';从未在URLSession.shared.dataTask上使用过(带:url!)

swift3获取不可变值的初始化';任务';从未在URLSession.shared.dataTask上使用过(带:url!),swift,urlsession,Swift,Urlsession,我是斯威夫特的新手。我试图简单地在一个网页中读取,而我得到的错误是“不可变值的初始化”任务从未被使用;考虑在“让任务=”语句中用赋值给“或”来替换它。这是我的代码(请原谅我的调试语句)。我做错了什么 let urlPath = "http://www.stackoverflow.com" let url = URL(string: urlPath) let session = URLSession.shared let task = session.dataTask(with:url!) { (

我是斯威夫特的新手。我试图简单地在一个网页中读取,而我得到的错误是“不可变值的初始化”任务从未被使用;考虑在“让任务=”语句中用赋值给“或”来替换它。这是我的代码(请原谅我的调试语句)。我做错了什么

let urlPath = "http://www.stackoverflow.com"
let url = URL(string: urlPath)
let session = URLSession.shared
let task = session.dataTask(with:url!) { (data, response, error) -> Void in
    if (error == nil) {
        print("inside If")
        print(data)
    } else {
        print("inside Else")
        print(error)
    }
    print("after If Else")
}

您看到的实际上是一个警告,编译器告诉您初始化了一个变量,但从未使用过它。通常,您可以将变量名替换为
,或者完全删除声明,因为您不使用它(或者忽略警告)。然而,在您的情况下,您实际上需要它,在初始化数据任务之后,您实际上没有使用它,这就是为什么您没有看到任何打印语句被输出的原因。要解决此问题,请调用
task.resume()
。这样做还将删除警告,因为您现在实际上正在使用该变量

let urlPath = "http://www.stackoverflow.com"
let url = URL(string: urlPath)
let session = URLSession.shared
let task = session.dataTask(with:url!) { (data, response, error) -> Void in
    if (error == nil) {
        print("inside If")
        print(data)
    } else {
        print("inside Else")
        print(error)
    }
    print("after If Else")
}
task.resume()

您正在初始化任务,但从未使用它。调用
task.resume()
以消除该错误(并实际启动数据任务)。谢谢Imiguelvargasf.True,它将更新为更一致。但如果这种趋势继续下去,我会被诅咒的。我喜欢一些分号,比如一种合适的语言……感谢Sasang的解释。这让我克服了最初的问题,然后我遇到了另一个问题:可选(Error Domain=NSURLErrorDomain Code=-1022“无法加载资源,因为应用程序传输安全策略要求使用安全连接。”我发现这个帖子让我度过了难关: