Tho*_*hom 0 json ios nsurlsession swift
我正在尝试JSON从Web服务器加载文件.以下是我启动请求的方式:
let url:NSURL? = NSURL(string: lookupUrlFragment + query)
// Check if an actual url object was created
if let actualUrl = url {
// Create a default NSURLSessionConfiguration
let sessionConfig:NSURLSessionConfiguration = NSURLSessionConfiguration.defaultSessionConfiguration()
// Create a default session
let session:NSURLSession = NSURLSession(configuration: sessionConfig)
session.dataTaskWithURL(actualUrl, completionHandler: {
(data:NSData?, response:NSURLResponse?, error:NSError?) in
NSLog("Got data = \(data)")
NSLog("Got response = \(response)")
NSLog("Got error = \(error)")
self.searchResults = data
self.delegate?.searchResultsAreReady()
})
}
Run Code Online (Sandbox Code Playgroud)
我已经使用调试器完成了这段代码.当它调用dataTaskWithURL()实际Url的值是正确的.如果我从网络浏览器点击它,我会得到该JSON文件.但完成处理程序永远不会被调用.它永远不会在我在完成处理程序中设置的断点处停止,并且调试器日志中不会显示任何输出.
我已经尝试使用完成处理程序在一个单独的函数而不是一个闭包,但行为是相同的.
谁能告诉我为什么我的完成处理程序没有被调用?
你忘了打电话resume().
let session:NSURLSession = NSURLSession(configuration: sessionConfig)
let task = session.dataTaskWithURL(actualUrl, completionHandler: {
(data:NSData?, response:NSURLResponse?, error:NSError?) in
NSLog("Got data = \(data)")
NSLog("Got response = \(response)")
NSLog("Got error = \(error)")
self.searchResults = data
self.delegate?.searchResultsAreReady()
})
task.resume() // you miss this
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
413 次 |
| 最近记录: |