2017-04-27 1 views
2

J'ai une classe de modèle comme celui-ciComment envoyer l'objet de modèle total en tant que paramètre de la méthode Alamofire dans Swift3?

class Example() { 
    var name:String? 
    var age:String? 
    var marks:String? 
} 

J'ajoute des données à cette classe de modèle

let example = Example() 
example.name = "ABC" 
example.age = "10" 
example.marks = "10" 

Après que je me suis converti à JSON puis j'ai posté

Alamofire.request(URL, method:.post, parameters: example) 

Alamofire pas acceptant les paramètres seulement son acceptation comme parameters = ["":"","",""]-->key value based, donc j'ai essayé de convertir le modèle en JSON, JSON en dictionnaire, même si je n'accepte pas son affichage li ke paramètres problème. Exactement j'ai besoin besoin total d'objets de modèle pour envoyer comme paramètre de méthode post dans Alamofire comme ceci:

let example = Example() 
Alamofire.request(URL, method:.post, parameters: example) 
+0

J'ai essayé comme cela aussi laisser JSON = SwiftyJSON.JSON (exemple) Alamofire.request (URL, méthode: .put, paramètres: JSON, encodage: JSONEncoding.default, en-têtes: Defines.Api.Headers) .responseJSON ne pas accepter – Tirupatirao

+0

Veuillez lire [Dans quelles circonstances puis-je ajouter "urgent" ou d'autres phrases similaires à ma question, afin d'obtenir des réponses plus rapides?] (// meta.stackoverflow.com/q/326569) - le résumé est que ce n'est pas un moyen idéal de s'adresser aux volontaires, et est probablement contre-productif pour obtenir des réponses. Merci de ne pas ajouter ceci à vos questions. – halfer

+0

Une bonne réponse semble avoir été ajoutée ci-dessous, Tirupatirao, le jour même où vous avez posé cette question. Comment êtes-vous arrivé à ça? – halfer

Répondre

3

Depuis l'API Alamofire ne s'accepte des dictionnaires, créer un dictionnaire vous-même!

Ajouter une méthode dans la classe de modèle appelé toJSON:

func toJSON() -> [String: Any] { 
    return [ 
     "name": name as Any, 
     "age": age as Any, 
     "marks": marks as Any 
    ] 
} 

appeler cette méthode lorsque vous appelez request:

Alamofire.request(URL, 
    method:.put, 
    parameters:example.toJSON(), 
    encoding:JSONEncoding.default, 
    headers :Defines.Api.Headers) 

Vous pouvez également utiliser SwiftyJSON:

func toJSON() -> JSON { 
    return [ 
     "name": name as Any, 
     "age": age as Any, 
     "marks": marks as Any 
    ] 
} 

Utilisation:

Alamofire.request(URL, 
    method:.put, 
    parameters:example.toJSON().dictionaryObject, 
    encoding:JSONEncoding.default, 
    headers :Defines.Api.Headers)