首页 > 解决方案 > 初学者问题:Swift:NSMutableURLRequest

问题描述

我有各种初学者错误,我无法解决。一些帮助将不胜感激。试图用谷歌搜索它并阅读苹果文档,但没有走远。这是代码部分:

import Foundation

struct StockDataManager  {

let headers = [
    "x-rapidapi-host": "yahoo-finance15.p.rapidapi.com",
    "x-rapidapi-key": "MYAPIKEY"
]

let request = NSMutableURLRequest(url: NSURL(string: "https://yahoo-finance15.p.rapidapi.com/api/yahoo/qu/quote/AAPL/financial-data")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
    
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers
    

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
    if (error != nil) {
        print(error)
    } else {
        let httpResponse = response as? HTTPURLResponse
        print(httpResponse)
    }
})

dataTask.resume()

}

此时我得到以下错误:

request.httpMethod = "GET"

和这里:

dataTask.resume()

我很确定这是基本的理解,对这个愚蠢的简单问题感到抱歉。提前感谢您的帮助。

标签: swiftnsurlnsmutableurlrequest

解决方案


你不能有代码 (request.httpMethod = "GET") 不是直接在结构中的声明。将其嵌入到函数中,如下所示:

func setRequest() -> NSMutableURLRequest {
    let request = NSMutableURLRequest(
        url: NSURL(string: "https://yahoo-finance15.p.rapidapi.com/api/yahoo/qu/quote/AAPL/financial-data")! as URL,
        cachePolicy: .useProtocolCachePolicy,
        timeoutInterval: 10.0)
    request.httpMethod = "GET"
    request.allHTTPHeaderFields = headers
    
    return request
}

推荐阅读