【问题标题】:HTTP GET request gets fatal error when network is disabled in iOS 9在 iOS 9 中禁用网络时 HTTP GET 请求出现致命错误
【发布时间】:2015-09-20 12:54:52
【问题描述】:

我有这个简单的 HTTP GET 请求:

@IBAction func MyButton(sender: AnyObject) {
    let url = NSURL(string: "http://api.openweathermap.org/data/2.5/weather?q=Tehran,ir")
    let task = NSURLSession.sharedSession().dataTaskWithURL(url!) {(data, response, error) in
        let datastring = NSString(data:data!, encoding:NSUTF8StringEncoding) as? String
        if error == nil {
        print("data is:")
        print(datastring)
        }else{
            if let err:String? = String(error?.description){
                print("faced to this error: \(err)")
            }
        }
    }
    task.resume()
}

当网络可用时,数据将被正确接收,但是当我关闭 WIFI 并单击按钮时,我会遇到此错误:

致命错误:在展开可选值时意外发现 nil

如何处理我的请求中的网络错误? 我在 iPod touch 和 Xcode 7 beta 版本 6 上使用 iOS 9,但我没有开发者计划会员资格

【问题讨论】:

    标签: ios swift ios9 xcode7


    【解决方案1】:

    您可以使用Reachability 库来检查互联网连接。它非常易于使用。

    更新

    检查错误后必须获取数据:

    let task = NSURLSession.sharedSession().dataTaskWithURL(url!) {(data, response, error) in
        if error == nil {
            let dataString = NSString(data:data!, encoding:NSUTF8StringEncoding) as? String
            println(dataString)
        } else {
            println(error)
        }
    }
    

    【讨论】:

    • 如果我不检查互联网连接是否会出现此错误?
    • 在这一行:让 datastring = NSString(data:data!, encoding:NSUTF8StringEncoding) as?字符串
    猜你喜欢
    • 1970-01-01
    • 2018-04-12
    • 2017-10-02
    • 1970-01-01
    • 2015-11-29
    • 2020-10-26
    • 2020-03-06
    • 2018-04-25
    • 1970-01-01
    相关资源
    最近更新 更多