我正在学习进行基本的网络通话,并遵循教程。本教程介绍了并发性以及在后台线程中下载 JSON 数据。我想知道为什么在
sharedSession.downloadTaskWithURL
方法中 queryURL
将作为 NSURL 对象传递,而不是 baseURL
。我觉得我错过了一些非常明显的东西!
func searchRecipeData() {
let baseURL = NSURL(string: "http://api.recipes.com/v1/api/recipes?_app_id=\(apiID)&_app_key=\(apiKey)")
let queryURL = NSURL(string: "&q=onion+soup", relativeToURL: baseURL)!
let sharedSession = NSURLSession.sharedSession()
let downloadData: NSURLSessionDownloadTask = sharedSession.downloadTaskWithURL(queryURL, completionHandler: { (location: NSURL!, response: NSURLResponse!, error: NSError!) -> Void in
if (error == nil) {
let data = NSData(contentsOfURL: baseURL!)
println(data)
}
})
// Resumes it even though it hasn't started yet
downloadData.resume()
}
查看创建 queryURL 的第二个参数。 您正在传递 baseURL 常量。 发生的情况是“&q=onion+soup”查询参数被告知与基本 URL 相关。 queryURL 常量是完整的 URL,然后将其传递给 downloadTaskWithURL。