NSURLSessionDownloadTask API 对 Swift 中语法的调用说明

NSURLSessionDownloadTask API call clarification on syntax in Swift

我正在学习进行基本的网络呼叫,并正在学习教程。本教程通过并发,并在后台线程中下载 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()

}

查看创建查询的第二个参数URL。您正在传递 baseURL 常量。发生的事情是“&q=onion+soup”查询参数被告知是相对于 baseURL 的。 queryURL 常量是完整的 URL,然后传递给 downloadTaskWithURL.