2016-03-16 152 views
-1

我正在做一些测试,通过发送数据与SOAP WebService,我的代码的一部分,他们是我尝试通过我的MAC的无线发送数据时发生错误的一部分:dataTaskWithRequest没有互联网连接

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是零。那我该怎么办?这是一个非常规的错误,因为它不是对真实设备的测试吗?如果他们没有互联网连接,我不想发送另一个successSoap值。

错误:

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

您是否检查过“错误”的内容? – tomahh

+0

@tomahh看我的编辑请 – Ben

回答

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 
    } 
} 
+0

我会说数据!甚至更强:它说:“我知道数据可能在这里没有,但如果它是零,那么请崩溃我的程序”。 – gnasher729

+0

我不知道为什么,但即使SOAP工程出现错误:打印错误描述: (NSError)error = 0xb029aa58 domain:class name = __NSMallocBlock__ - code:2054954768 {ObjectiveC.NSObject = {} }' – Ben

+0

编辑。谢谢 ! – tomahh