2016-10-08 9 views
1

여기 여기 는 스위프트 : { "firstName을": "추가", "이메일 JSONSerialization SIGABRT 오류

func makeHTTPPostRequest(path: String, body: String, onCompletion: @escaping ServiceResponse) { 
    var err: NSError? 
    let request = NSMutableURLRequest(url: NSURL(string: path)! as URL) 

    // Set the method to POST 
    request.httpMethod = "POST" 

    // Set the POST body for the request 

    request.setValue("application/json", forHTTPHeaderField: "Content-Type") 
    request.httpBody = try! JSONSerialization.data(withJSONObject: body, options: []) 

    let session = URLSession.shared 

    let task = session.dataTask(with: request as URLRequest, completionHandler: {data, response, error -> Void in 
     let json:JSON = JSON(data: data!) 
     onCompletion(json, err) 
    }) 
    task.resume() 
} 

몸 변수의 값입니다 코드 (XCode8가)입니다 ... JSONSerialization에 대한 SIGABR 오류가 ":"asd ","lastName ":"add ","password ":"asdas "}

도움이 될 것입니다!

답변

0

당신이 신속 3.0

let dataTsked = session.dataTask(with: URL(string: path)!) { (data, response, error) in 
    if (error != nil) { 
+0

할 필요가 ... –

1

body에 구문을 업데이트해야하는 StringJSONObject 종류 만이 아니다. 사용하려고하는 함수는 Dictionary 또는 Array과 같은 최상위 수준의 Foundation 개체가 필요합니다.

요청에 본문 데이터 만 전달하면됩니다.

그래서 대신 :

request.httpBody = try! JSONSerialization.data(withJSONObject: body, options: []) 

가 있어야한다 :

request.httpBody = body.data(using: .utf8)! 

참고 : 몸은 오류가 JSONSerialization에 잘 포맷 된 JSON 문자열