gpt4 book ai didi

ios - Swift:解释 NSURLSession.sharedSession().dataTaskWithURL 的语法语法

转载 作者:行者123 更新时间:2023-11-28 12:54:52 26 4
gpt4 key购买 nike

我是 iOS World 的新手。当我看到下载文件的方法时。我看到这段代码:

        // create url
let imageURL = NSURL(string: Constants.CatURL)!

// create task
let task = NSURLSession.sharedSession().dataTaskWithURL(imageURL) {
(data, response, error) in print("task finished")
}

部分没看懂:

 {
(data, response, error) in print("task finished")
}

data response error 对象来自哪里?他们是哪种类型?我熟悉一些语言,比如Java、C#和上面的结构很奇怪:方法调用之后是一个{}代码块。我只是看到在 iOS 中有两种方法与上面有很大不同:

let task = NSURLSession.sharedSession().dataTaskWithURL(url: NSURL)
let task = NSURLSession.sharedSession().dataTaskWithURL(url: NSURL, completionHandler: (NSData?, NSURLResponse?, NSError?) -> Void)

谢谢:)

最佳答案

{ ... } 中的东西是一个匿名函数体。 (...) in 中的内容是传递给函数的参数名称。

关于“它们是哪种类型?”的问题部分真是个好问题。答案是 Swift 知道您引用的这个声明:

let task = NSURLSession.sharedSession().dataTaskWithURL(url: NSURL, completionHandler: (NSData?, NSURLResponse?, NSError?) -> Void)

所以 Swift 已经知道这三个参数的类型,因此可以选择省略类型(这里实际上已经省略了)。

您可能还会对省略标签 completionHandler: 感到困惑。这是合法的,因为此函数是最后 参数。在这种情况下,删除标签并将匿名函数体放在函数调用括号外(称为“尾随语法”)是合法的。

因此,您引用的代码实际上是实现dataTaskWithURL(_:completionHandler:)的合法形式。

关于ios - Swift:解释 NSURLSession.sharedSession().dataTaskWithURL 的语法语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35278821/

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