error al analizar datos json con swift “No se pudieron leer los datos porque no están en el formato correcto”.

cualquiera que sepa de recuperar datos de una base de datos y usarlos para verificar si un usuario sale (registrarse), por favor ayuda. ¡Mi cabeza está destrozada y desafortunadamente mi encoding no es lo suficientemente buena como para solucionar el problema!

do { if let json = try NSJSONSerialization.JSONObjectWithData(data!, options: []) as? NSDictionary { let parseJSON = json let userID = parseJSON["userId"] as? String //dictionary object that uses a key if(userID != nil) { //everything is fine and take user to main page //instantiate the view controller let profilePage = self.storyboard?.instantiateViewControllerWithIdentifier("ProfilePageViewController") as! ProfilePageViewController //wrap it in nav controller let profilePageNav = UINavigationController(rootViewController: profilePage) //take user to this page //window root view controller- existing is replaced and no back button let appDelegate = UIApplication.sharedApplication().delegate appDelegate?.window??.rootViewController = profilePageNav }else{ //display the alert message from the php file let errorMessage = parseJSON["message"] as? String let myAlert = UIAlertController( title: "Alert!", message: errorMessage, preferredStyle: UIAlertControllerStyle.Alert) //create a button action - let okAction = UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler: nil) //adding ok button and presenting to a user and once ok button is pressed- dismiss the view myAlert.addAction(okAction) self.presentViewController(myAlert, animated: true, completion:nil) } }//end of if let json }//end of do catch let error as NSError { print(error.localizedDescription) } print("success") }//end of dispatch_async }).resume()//end of request }//end of action sign in 

Creo que el problema está en la línea if let json = try, los datos no están en el formato correcto. Mi script php está funcionando bien y puedo pasar parámetros en el navegador y todo parece estar bien. La clave es correcta (userId). Creo que otro problema es dejar que userID = parseJSON [“userId”] como? Cuerda

si he hecho una solicitud de datos como NSDictionary, ¿cómo puedo convertir esta información para escribir String? (estoy seguro de que no se puede). Lo siento, hay muchas preguntas. Necesito representaciones de cadena para usar en otro controlador de vista. He estado probando esto durante años y no puedo hacerlo funcionar, así que realmente agradecería algo de ayuda. Cuando ejecuto el código, pasa por alto el bloque “do” y va directamente a la .localizedDescription

¡Gracias por hablar el tiempo para leer mi larga pregunta!

    El problema está definitivamente en NSJSONSerialization.JSONObjectWithData que no le gusta su JSON por algún motivo.

    Intente limpiar su JSON antes de alimentarlo a NSJSONSerialization:

     var dataString = String(data: data, encoding: NSUTF8StringEncoding)! dataString = dataString.stringByReplacingOccurrencesOfString("\\'", withString: "'") let cleanData: NSData = dataString.dataUsingEncoding(NSUTF8StringEncoding)! 

    al enviar una solicitud “request.setValue (” application / json “, forHTTPHeaderField:” Accept “)” resolvió mi error.