2016-10-08 9 views
1

я получаю ошибку SIGABR для JSONSerialization ... вот код (XCode8)Swift: 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() 
} 

Здесь значение переменной тела: { "Имя": "добавляет", "электронная почта ":" asd "," lastName ":" add "," password ":" asdas "}

Любая помощь будет принята с благодарностью!

ответ

0

вам необходимо обновить синтаксис для быстрой 3,0

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

Ошибка в JSONSerialization ... –

1

body не JSONObject, но тип String. Функция, которую вы пытаетесь использовать, нуждается в объекте Foundation верхнего уровня, таком как Dictionary или Array.

Вам просто нужно передать данные тела в запрос.

Таким образом, вместо:

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

должно быть:

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

Примечание: тело должно быть хорошо отформатированный JSON Строка