2017-10-13 6 views
0

私はGETメソッドで値を送信する場合、私はこのエラーを得た:スレッド1:EXC_BREAKPOINT(コード= 1、サブコード= 0x10136bb50) - 迅速

スレッド1:EXC_BREAKPOINT(コード= 1、サブコード= 0x10136bb50 )

値を取得するには、次の

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

どれ不用意に書かれた感嘆符は招待状です:*私がクラッシュしてください*。ところで、これはSwift 3です:NSMutableURLRequest、NSURLとNSErrorを使わず、変数名は* snake_cased * – vadian

+0

0kではなく* camelCased *であるはずです。 NSURLはutf-8をサポートしていないと思います。私はutf-8文字列を使うとこのエラーが出ます。 –

+0

このクラッシュの原因となっている 'path'の正確な値で質問を更新してください。おそらくスペースやその他の無効なエスケープ文字が含まれている可能性があります。 – rmaddy

答えて

0

コードがゼロの値を実行する場合に発生。ここでコードNSURL(文字列:パス)!値はゼロかもしれません。オプションのバインディング(letの場合)を使用して、NSURLが有効かどうかをチェックすることができます。文字列が有効でなく、有効なURLを作成しない場合に発生します。

+0

私は 'NSURL'はutf-8をサポートしていないと思います。私はutf-8文字列を使うとこのエラーが出ます。 –

0

あなたはこのように使用することができます:

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) 
    } 
} 
関連する問題