Ich versuche, ein Array von Objekten in JsonSerialization und Gzip hochzuladen. Ich habe eine Struktur geschrieben wie in GitHub beschrieben.Alamofire Extra Argument 'Methode' im Aufruf - mit benutzerdefinierten ParameterEncoding
struct JSONDocumentArrayEncoding: ParameterEncoding {
private let array: [Document]
init(array:[Document]) {
self.array = array
}
func encode(_ urlRequest: URLRequestConvertible, with parameters: Parameters?) throws -> URLRequest {
var urlRequest = urlRequest.urlRequest
let data = try JSONSerialization.data(withJSONObject: array, options: [])
if urlRequest!.value(forHTTPHeaderField: "Content-Type") == nil {
urlRequest!.setValue("application/json", forHTTPHeaderField: "Content-Type")
}
urlRequest!.httpBody = data
return urlRequest!
}
}
dann in der Anfrage
request = customAlamofireManager.request(
ServerURL ,
method: .post,
parameters: [objects],
encoding: JSONDocumentArrayEncoding,
headers: headers
)
Fehler "extra Argument Methode in call". Dieses Problem wurde in github1508 here diskutiert, aber ich kann keine Lösung sehen. Da der Parameter als [string: object] definiert ist, kann ein Array nicht übergeben werden. Daher gibt es selbst mit angepasster Struktur für die Codierung keine Möglichkeit, diese Körperdaten weiterzugeben. Ich denke eine Arbeit um vielleicht einen Dummy-Schlüssel zum Array hinzufügen und Server API ändern, um den Wert des Wörterbuchs zu fangen. Aber es gibt kein Ideal.
Nur versucht, einen zufälligen Schlüssel zum Array hinzuzufügen, um es zu einem Wörterbuch wie ["data": [obj]], noch immer gleichen Fehler. Weil die Struktur ein Array erwartet, kein Wörterbuch. Also wird es nicht funktionieren. – Ning