Ich habe eine statische Funktion unterhalb, die eine GET
Anfrage durchführen und dann versuchen, die Daten in was auch immer <T>
ist zu analysieren.Generic Parameter 'T' konnte nicht mit Schließungen
public static func get<T>(url: NSURL, paramaters: [String : AnyObject]?, paramaterEncoding: ParameterEncoding, compleation:(response: Response<T>) -> Void)
Meine Frage ist, wie nenne ich es?
Wenn ich es so zu nennen versuchen, unter ich den Fehler von Cannot explicitly specialize a generic function
let url = NSURL(string: "http://g.co")!
typealias JsonResponse = [String : AnyObject]
Notwork.get<JsonResponse>(url, paramaters: nil, paramaterEncoding: ParameterEncoding.json) { (response) in }
Von umsah Funktionen wie diese in der Regel ihre Art aus der Variablen bekommen bekommen, dass die Funktion unten wie das Beispiel nur zurückgibt.
let result: Response<JsonResponse> = Notwork.get(url, paramaters: nil, paramaterEncoding: .json)
jedoch als das Ergebnis in einem Verschluss kommt zurück, wie kann ich festlegen, was <T>
ist?
Dank
bearbeiten
Nachfolgend finden Sie einige Beispielcode, der das gleiche Problem darstellt.
import Foundation
struct MyClass {
static func myFunction<T>(compleation:(response: T) -> Void) {
let apiResponse = ["some" : "value"]
guard let value = apiResponse as? T else {
return
}
compleation(response: value)
}
}
//Gives error "Generic parameter 'T' could not be inferred"
MyClass.myFunction { (response) in
}
zeigen uns die Umsetzung der 'get' Funktion –
@RMenke ich ein Beispiel hinzugefügt haben, die das gleiche Problem wie die get-Methode zeigt andere Dinge hat da drin, die nicht auf diese Frage wie Parameter-Codierung verwandt sind ect. –