我是新来的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