没有互联网连接的dataTaskWithRequest

时间:2016-03-16 09:48:24

标签: ios swift nsurlsession

我正在通过使用SOAP WebService发送数据进行一些测试,这是我的代码的一部分,当我尝试通过我的MAC的Wifi发送数据时它们是错误的:

    let task = session.dataTaskWithRequest(theRequest, completionHandler: {data, response, error -> Void in
        print("Response Login: \(response)")
        let strData = NSString(data: data!, encoding: NSUTF8StringEncoding)!
        print("Body Login: \(strData)")
        if error != nil
        {
            print("Error Login: " + error!.description)
        }
        let parser = NSXMLParser(data: data!)
        parser.delegate = self
        parser.parse()
        if(self.success == "1"){
            self.successSoap = 1
        }

它说strData是零。那我该怎么办?这是一个正常的错误,因为它不是对真实设备的测试?如果他们没有互联网连接,我不想再发送另一个成功价值。

错误:

fatal error: unexpectedly found nil while unwrapping an Optional value
Printing description of error:
(NSError?) error = domain: "NSURLErrorDomain" - code: 4294966287 {
  ObjectiveC.NSObject = {}
}

enter image description here

1 个答案:

答案 0 :(得分:1)

数据是Optional类型。当你使用data!时,你会告诉编译器相信我,我知道这里的数据不能是nil

您希望修改完成处理程序以考虑出错的可能性。

let task = session.dataTaskWithRequest(theRequest, completionHandler: { data, response, error -> Void in
    if let error = error {
       // an error occurred processing the request, deal with the error
    } else if let response = response as? NSHTTPURLResponse, let data = data {
        // check response status code
        if (200..<300) ~= response.statusCode {
            let parser = NSXMLParser(data: data)

            parser.delegate = self
            parser.parse()
        } else {
            // server generated on error
        }
    } else {
       // something went wrong
    }
}