2016-03-16 5 views
-1

Я делаю некоторые тесты, отправляя данные с SOAP WebService, частью моего кода, где они являются ошибкой, когда я пытаюсь отправить данные по очереди Wifi моего 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

Вы проверили содержание 'error'? – 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 домен: имя класса = __NSMallocBlock__ - код: 2054954768 { ObjectiveC.NSObject = {} } ' – Ben

+0

Отредактировано. Благодаря ! – tomahh

Смежные вопросы