我是新來的Swift 2.0,但我有OOP語言的經驗。我試圖通過JSON API在標籤中顯示城市的名稱。但是我經常得到錯誤「EXC_BAD_INSTRUCTION」和「Unwrapping nil」錯誤。我認爲這個問題可能在URL中。因爲我已經嘗試過使用另一個API,radnomuser.me/api,並且我得到的結果沒有錯誤。有人可以讓我解決問題,因爲我在互聯網上得到了很多答案,而且他們都不一樣。如果您不瞭解我的問題,請隨時提問,因爲我認爲這是至關重要的部分。 謝謝!所有的Swift 2解析和閱讀JSON
@IBOutlet weak var viaSegueTextView: UITextView!{
var viaSegue = ""
override func viewDidLoad() {
super.viewDidLoad()
getWeatherData()
}
//////////////////////////////////////////////////////////////////////////
func getWeatherData {
let endpoint = NSURL(string: "http://api.openweathermap.org/data/2.5/weather?q=London,uk&appid=44db6a862fba0b067b1930da0d769e98")
let data = NSData(contentsOfURL: endpoint!)
do {
if let json: NSDictionary = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers) as? NSDictionary {
if let name = json["name"] as? String
{
viaSegueLabel.text = "\(name)"
}
}
}catch let error as NSError{
print("\(error)")
}
}
}
解析和閱讀很好。你的'viaSegueLabel'是零。我在Playground中嘗試了你的下載/解析片段,並且解析得很好。也爲下一次 - 不要** EVER **張貼您的應用程序ID,登錄名等... – Michal
感謝您的提示,它只是測試應用程序,只是閱讀JSON和顯示數據,但我明白你的意思。 我還是不明白。我知道我沒有,這意味着我沒有得到JSON的價值。出於某種原因,它在「if」之前停止,viaSequeLabel爲零,因爲它沒有解析它,或者因爲URL是錯誤的或其他的東西? 感謝您的回覆。 – Srdjan
這不是問題,但'JSONObjectWithData'不返回一個可選項,所以可選的綁定是無用的。寫'讓json =嘗試NSJSONSerialization.JSONObjectWithData(jsonData,options:[])as! [String:AnyObject]',如果發生錯誤,catch塊將被執行 – vadian