为什么从此URL检索数据返回nil?

时间:2015-04-05 07:04:38

标签: ios json swift

我关注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?

1 个答案:

答案 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"
}