我关注this post for getting JSON data,由于某种原因这个功能:
func getJSON(urlToRequest: String) -> NSData {
return NSData(contentsOfURL: NSURL(string: urlToRequest)!)!
}
当我收到错误时,返回nil
:
fatal error: unexpectedly found nil while unwrapping an Optional value
我打破了这个功能:
func getJSON(urlToRequest: String) -> NSData {
let url : NSURL! = NSURL(string: urlToRequest)
let data : NSData! = NSData(contentsOfURL: url)
return data
}
根据我的调试器:
Printing description of url:
www.reddit.com/r/earthporn/.json
Printing description of data:
(NSData!) data = nil
在Chrome的网址中粘贴并不会显示空白页面。它提供了大量的JSON,所以我很困惑为什么data
是nil?
答案 0 :(得分:2)
您忘了添加网址方案。 NSURL需要完整的地址。您还应该使用if来安全地解包您的可选数据:
func getJSON(urlToRequest: String) -> NSData? {
if let url = NSURL(string: urlToRequest) {
if let data = NSData(contentsOfURL: url) {
return data
}
}
return nil
}
if let myData = getJSON("http://www.reddit.com/r/earthporn/.json") {
println("there is data") // "there is data in myData"
}