Ich würde gerne wissen, wie ich ein SwiftyJSON-Array in meine Parameter für die Alamofire-Anfrage einfügen kann.
Eigentlich verwende ich diesen Code (Swift 3), um die Parameter für die Anfrage einzustellen:
let params = ["customObjects": customObjects.map ({$ 0.toJSON ()})]
... aber dies löst eine Ausnahme aus, wenn ich versuche, die Anfrage zu starten:
Nicht erfasste Ausnahme "NSInvalidArgumentException", Grund: "Ungültiger Typ in JSON-Schreibvorgang (_SwiftValue)"
Die "customObjects" sind ein Array meiner benutzerdefinierten Modellklasse.
Wenn Sie weitere Informationen benötigen, lassen Sie es mich wissen.
Antworten:
0 für die Antwort № 1Ich habe die Lösung für mich gefunden:
let params = ["customObjects": customObjects.map({$0.toDictionary()})]
Und hier die toDictionary () -Funktion in meinem CustomObject:
func toDictionary() -> [String: Any] {
let dict: [String: Any] = [
"exampleKey": "exampleValue",
"exampleKey2": "exampleValue2"
]
return dict
}
Ich denke, das liegt daran, dass man Alamofire mit einrichten kann encoding: JSONEncoding.default
.
0 für die Antwort № 2
Sie können ein SwiftyJSON-Objekt (das aufgerufen wird) konvertieren yourJSON
hier) zu Parametern wie folgt:
let parameters : Parameters = yourJSON.dictionaryObject ?? [:]
Dann können Sie es in einer Alamofire-Anfrage wie folgt verwenden:
Alamofire.request("https://yourURL.com/somePath", method: .post, parameters: parameters, encoding: JSONEncoding.default, headers: nil).responseJSON { response in
// ... do whatever you would like with the response
}