2016-08-25 3 views
0

J'envoie les données en utilisant la méthode post comme celui-ciObtenir erreur dans l'affichage des données dans rapide

let login = ["user_name":usernameTextField.text,"password":passwordTextField.text] 
    //["user":"[email protected]", "pass":"ords_password"] 

let url = NSURL(string: "http://localhost:8300")! 

let session = NSURLSession.sharedSession() 

let request = NSMutableURLRequest(URL: url) 

do { 
    // JSON all the things 
    let auth = try NSJSONSerialization.dataWithJSONObject(login, options: .PrettyPrinted) 

    // Set the request content type to JSON 
    request.setValue("application/json", forHTTPHeaderField: "Content-Type") 

    // The magic...set the HTTP request method to POST 
    request.HTTPMethod = "POST" 

    // Add the JSON serialized login data to the body 
    request.HTTPBody = auth 

    // Create the task that will send our login request (asynchronously) 
    let task = session.dataTaskWithRequest(request, completionHandler: { (data, response, error) -> Void in 
     // Do something with the HTTP response 
     print("Got response \(response) with error \(error)") 
     print("Done.") 
    }) 

    // Start the task on a background thread 
    task.resume() 

} catch { 
    // Handle your errors folks... 
    print("Error") 
} 

Mais je reçois le message d'erreur comme

Type d'argument « [chaîne: chaîne] 'ne sont pas conformes à type attendu « ANYOBJECT »

Si je donne la chaîne directe, il accepte. Si je donne dynamiquement en utilisant le TextFields il ne vient pas. Je ne sais pas quelle est l'erreur que j'ai commise.

Quelqu'un peut-il S'il vous plaît aider à résoudre ce problème?

Merci d'avance.

+0

Quelle ligne obtenez-vous l'erreur réelle? – sbarow

+0

laissez auth = try NSJSONSerialization.dataWithJSONObject (login, options: .PrettyPrinted) à "login" –

+1

Déchiffrez le texte de votre textField. – Apurva

Répondre

1

Je pense que votre problème est que vous mettez des chaînes optionnelles dans le dictionnaire.

Essayez de faire ceci:

guard 
    let username = usernameTextField.text, 
    let password = passwordTextField.text else { 
     return print("Need username & password") 
} 
let login = ["user_name": username,"password": password] 
... 
+0

même s'il arrive la même erreur. –

+0

@anushahrithi juste mis à jour ma réponse, il aurait dû être 'laisser login = [" user_name ": nom d'utilisateur," mot de passe ": mot de passe]' – sbarow

+0

Super.Merci u tellement.Il travaille. –

0

propriété de texte UITextField retourne une valeur facultative, donc compilateur ne peut pas le convertir en ANYOBJECT. Vous devez déballer les options avant.

0

Essayez cette

let login = ["user_name":usernameTextField.text,"password":passwordTextField.text] as Dictionary<String, AnyObject> 
+0

Cela ne compilera pas le texte des champs de texte renvoyer un optionnel. – sbarow

+0

Mais ici le problème n'a pas de valeur optionnelle. –

+0

Vous voulez jeter cela dans un terrain de jeu et dites-moi si ce n'est pas un problème? – sbarow