2016-10-13 3 views
-2

Я использую следующий код для получения ответа с php-страницы. Его работа штрафа за исключением того, каждый раз в некоторое время он выходит из строя с ошибкой после recieveing ​​нулевой величины на следующую строке:swift http request crash nil value

пусть responseString = NSString (данные: данные !, кодирования: String.Encoding.utf8.rawValue)

есть ли способ, которым я могу это поймать?

let myUrl = NSURL(string: "https://*****backend/newmessage.php") 
 
     let request = NSMutableURLRequest(url: myUrl! as URL) 
 
     request.httpMethod = "POST" 
 
     let postString = "userid=\(userid!)" 
 
     
 
     print(postString) 
 
     request.httpBody = postString.data(using: String.Encoding.utf8) 
 
     let task = URLSession.shared.dataTask(with: request as URLRequest) { 
 
      data, response, error in 
 
      DispatchQueue.global(qos: DispatchQoS.QoSClass.default).async { 
 
       let responseString = NSString(data: data!, encoding: String.Encoding.utf8.rawValue) 
 
       if error != nil { 
 
        print("Error: \(error)") 
 
       } 
 
       DispatchQueue.main.async() { 
 
        
 
        print(responseString!) 
 
        
 
        if (responseString! == "NEW"){ 
 
         
 
         self.messageIcon.setImage(UIImage(named: "newmessage.png"), for: UIControlState.normal) 
 
         
 
        }else{ 
 
         
 
         
 
         self.messageIcon.setImage(UIImage(named: "envelope.png"), for: UIControlState.normal) 
 
         
 
         
 
        } 
 
        
 
        
 
       } 
 
      } 
 
     } 
 
     task.resume()

ответ

1

Почему бы не обратиться к потенциальному нолю ж/с if-else утверждения? Кроме того, вы можете использовать оператор guard.

if responseString != nil { // do stuff } else { // do other stuff}