2017-10-13 3 views
0

J'ai eu cette erreur quand je veux envoyer la valeur avec la méthode GET:Discussion 1: EXC_BREAKPOINT (code = 1, subcode = 0x10136bb50) - rapide

Discussion 1: EXC_BREAKPOINT (code = 1, subcode = 0x10136bb50)

Pour obtenir des valeurs:

var flname  = self.txt_field_flname.text 
var job_title = self.txt_field_job_title.text 
var mobile  = self.txt_field_mobile.text 
var des   = self.txt_field_des.text 
var lat   = self.lat 
var lon   = self.lon 

self.sendNewJob(fname: flname!, title: job_title!, mobile: mobile!, des: des!, lat: String(lat), lon: String(lon)) 

func sendNewJob(fname:String,title:String,mobile:String,des:String, 
       lat:String,lon:String) 
{ 
    print("fname \(fname) title \(title) mobile \(mobile) des \(des) lat \(lat) lon \(lon)") //output is well 

    RestApiManager.sharedInstance.sendNewJob(fname: fname,title: title,mobile:mobile, 
              des:des,lat:lat,lon:lon) { (json: JSON) in 

    } 
} 

func sendNewJob(fname:String,title:String,mobile:String,des:String, 
       lat:String,lon:String,onCompletion: @escaping (JSON) -> Void) { 
    let route = baseURL+"up=1&Name=\(fname)&BusinessName=\(title)&MobileNumber=\(mobile)&latitude=\(lat)&longitude=\(lon)&Description=\(des)" 
    makeHTTPGetRequest(path: route, onCompletion: { json, err in 
     onCompletion(json as JSON) 
    }) 
} 


// MARK: Perform a GET Request 
private func makeHTTPGetRequest(path: String, onCompletion: @escaping ServiceResponse) { 
    let request = NSMutableURLRequest(url: NSURL(string: path)! as URL) // line of my error 

    let session = URLSession.shared 

    let task = session.dataTask(with: request as URLRequest, completionHandler: {data, response, error -> Void in 
     if let jsonData = data { 
      let json:JSON = JSON(data: jsonData) 
      onCompletion(json, error as NSError?) 
     } else { 
      onCompletion(nil, error as NSError?) 
     } 
    }) 
    task.resume() 
} 

enter image description here

+3

Toute marque d'exclamation négligemment écrite est une invitation: * S'il vous plaît me planter *. Soit dit en passant, c'est Swift 3: N'utilisez pas NSMutableURLRequest, NSURL et NSError et les noms de variables sont censés être * camelCased * plutôt que * snake_cased * – vadian

+0

0k. Je pense que 'NSURL' ne supporte pas utf-8. J'ai eu cette erreur quand j'utilise la chaîne utf-8. –

+0

Mettez à jour votre question avec la valeur exacte de 'path' qui provoque ce plantage. Très probablement, il y a des espaces ou d'autres caractères invalides, non échappés. – rmaddy

Répondre

0

Cela se produit lorsque le code exécute une valeur nulle. Voici le code NSURL (string: path)! la valeur pourrait être nulle. Vous pouvez utiliser la liaison facultative (si let) pour vérifier si le NSURL est valide. Cela arrive quand la chaîne n'est pas valide et ne fait pas une URL valide.

+0

Je pense que 'NSURL' ne supporte pas utf-8. J'ai eu cette erreur quand j'utilise la chaîne utf-8. –

0

Vous pouvez utiliser comme ceci:

private func makeHTTPGetRequest(path: String, onCompletion: @escaping ServiceResponse) { 
    if let encodedPath = path.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) { 
     if let url = URL(string: encodedPath) { 
      let request = URLRequest(url: url) 
      let session = URLSession.shared 
      let task = session.dataTask(with: request as URLRequest, completionHandler: {data, response, error -> Void in 
       if let jsonData = data { 
        let json:JSON = JSON(data: jsonData) 
        onCompletion(json, error as NSError?) 
       } else { 
        onCompletion(nil, error as NSError?) 
       } 
      }) 
      task.resume() 
     } else { 
      print("url is nil") 
      onCompletion(nil) 
     } 
    } else { 
     print("unable to encode url") 
     onCompletion(nil) 
    } 
}