JSON致命错误:意外地发现零,而解包一个可选值
我不太确定为什么我得到这个错误。有什么我不是一个可选值或某种期权方面检查,我很想念JSON致命错误:意外地发现零,而解包一个可选值
func getJSON(){
let url = NSURL(string: myURL)
let request = NSURLRequest(url: url! as URL)
let session = URLSession(configuration: URLSessionConfiguration.default)
let task = session.dataTask(with: request as URLRequest) { (data,response,error) -> Void in
if error == nil {
let swiftyJSON = JSON(data:data!)
let theTitle = swiftyJSON["results"].arrayValue
for title in theTitle{
let titles = title["title"].stringValue
print(titles)
}
} else{
print("Error")
}
}
task.resume()
}
如果错误是url
是零,当你强迫展开它,那么这意味着在行之前,您创建url
您已经传递了myURL
值,出于某种原因实际上不能解析为NSURL
对象。
打印出myURL
看看它是什么。我敢打赌,这不是完整的。
顺便说一句,你不应该强行解开包装。试试这样的:
guard let url = NSURL(string: myURL) else {
print("Couldn't parse myURL = \(myURL)")
return
}
let request = NSURLRequest(url: url as URL) // <-- No need to force unwrap now.
非常感谢你。那么是不是像各种安全网一样展开? –
不完全。在某些情况下,您需要说“不,真的,相信我,我知道我在做什么”,但大多数情况下,如果您有可选项,则需要在使用前妥善解开它。最简单的方法是使用'guard let foo = someOptional'或'if let foo = someOptional'。 –
非常感谢。我对swift很陌生,所以这是非常有帮助的 –
你从哪里得到这个错误,哪一行? – Moritz
你的命名(复数 - 多个项目'theTitle'和单数 - 一个项目'titles')相当混乱。因为你使用的是Swift 3,所以有'URL'和'URLRequest'。 – vadian
错误发生在请求行上:let request = NSURLRequest(url:url!as URL) –