带有 NSURLSession 的 Swift 中的 HTTP 请求
Posted
技术标签:
【中文标题】带有 NSURLSession 的 Swift 中的 HTTP 请求【英文标题】:HTTP Request in Swift with NSURLSession 【发布时间】:2014-10-12 11:10:45 【问题描述】:我正在尝试使用 NSURLSession 在带有 Swift 的 ios 应用程序中发出 HTTP 请求,但 XCode 会引发错误。我一直在搜索***和网络,我的代码与人们建议的非常相似,但由于某种原因它不起作用。我在 XCode 6.0.1 (6A317) 上。
var session = NSURLSession.sharedSession().dataTaskWithURL(NSURL(url),
completionHandler : (data, response, error) -> Void in
println("Done")
)
session.resume()
错误指向上面第一行:“Extra argument 'completionHandler' in call”
使用尾随闭包会引发类似的错误:
var session = NSURLSession.sharedSession().dataTaskWithURL(NSURL(url)) (data, response, error) -> Void in
println("Done")
session.resume()
错误也在第一行:“Extra argument in call”
我错过了什么吗?
【问题讨论】:
【参考方案1】:简单的获取请求是这样的:
let task = NSURLSession.sharedSession().dataTaskWithURL(NSURL(string: "url_here")) data, response, error in
task.resume()
【讨论】:
data
、response
和 error
从哪里获得价值?它们是闭包捕获的输出吗?这些参数如何获得它们的值?
这些值由 NSURLSession 传递给闭包
显然!我问怎么做!你没有使用completionhandler
关键字this...你只使用dataTaskWithURL(_:)
这意味着你不应该收到任何参数
这只是示例代码。对于您的实际应用程序,您需要使用这些值。也许我应该在闭包内添加注释行,说明在此处使用您的回复
示例代码是什么意思?它可以像你写的那样使用。见here。您介意为您的答案添加更多解释吗?【参考方案2】:
显然我发现了错误在哪里。
问题不在于NSURLSession()
,而在于NSURL()
NSURL(string: url)
错误现在消失了。
【讨论】:
以上是关于带有 NSURLSession 的 Swift 中的 HTTP 请求的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Swift 2 中使用 NSURLSession 的 dataTaskWithURL?