2016-10-08 2 views
1

J'obtiens l'erreur SIGABR pour jsonSerialization ... voici le code (XCode8)Swift: jsonSerialization erreur 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() 
} 

est ici la valeur de la variable du corps: { "prenom": "ajoute", "email ":" asd "," lastName ":" ajouter "," mot de passe ":" asdas "}

Toute aide sera grandement appréciée!

Répondre

0

vous devez mettre à jour la syntaxe à rapide 3,0

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

L'erreur est jsonSerialization ... –

1

body est pas un JSONObject mais un type de String. La fonction que vous essayez d'utiliser nécessite un objet Foundation de niveau supérieur tel que Dictionary ou Array.

Vous avez juste besoin de transmettre des données de corps à la demande.

Ainsi, au lieu de:

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

il devrait être:

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

Note: le corps doit être un bien au format JSON Chaîne