我正在嘗試使用取自.plist
文件的API密鑰來測試服務器響應。當我從請求頭打印出密鑰時,它有一個可選的包裝器:Optional([App-Token: apikey1234567]))
。我沒有得到迴應,我認爲這是因爲密鑰正在以這種形式傳遞。 Swift有點新鮮。我怎麼能通過這個,所以它不是可選的?以下相關代碼:可選API封裝周圍swift
var key: String!
let baseURL: String = ("https://apiurl.com/").stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)!
override init() {
path = NSBundle.mainBundle().pathForResource("APIkey", ofType: "plist")
dict = NSDictionary(contentsOfFile: path!)
key = dict!.objectForKey("APIkey") as! String
super.init()
}
func updateJSON() {
var session = NSURLSession.sharedSession()
var request = NSMutableURLRequest(URL: NSURL(string: baseURL)!)
request.HTTPMethod = "GET"
request.setValue(key, forHTTPHeaderField:"App-Token")
// This prints out the 'Optional([App-Token: apikey1234567]))'
println("\(request.allHTTPHeaderFields))")
var dataTask = session.dataTaskWithRequest(request, completionHandler: { (data, response, error) -> Void in
var error: NSError?
if (error != nil) {
println("\(error)")
} else {
self.jsonObject = NSJSONSerialization.JSONObjectWithData(data, options: nil, error: &error) as? NSDictionary
println("\(self.jsonObject)")
}
})
dataTask.resume()
}
UPDATE:我正在nil
因爲jsonObject
正在投作爲NSDictionary
。當我將其類型更改爲AnyObject
時,響應回來了。
你試過字典! objectForKey(「APIkey」)爲!串! ? – Miknash
剛試過。仍然是可選的包裝。 – Ja5onHoffman
關鍵!串!在更新JSON方法?奇怪的是,它是可選的,因爲你聲明它爲非可選字符串字符串從字典作爲非可選... – Miknash