У меня есть статическая функция ниже, которая будет выполнять запрос GET
, а затем попытаться проанализировать данные во всех <T>
.Общий параметр 'T' не может быть выведен с закрытием
public static func get<T>(url: NSURL, paramaters: [String : AnyObject]?, paramaterEncoding: ParameterEncoding, compleation:(response: Response<T>) -> Void)
Мой вопрос: как я могу его назвать?
Если я пытаюсь вызвать его, как показано ниже, я получаю ошибку 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 }
Глядя вокруг таких функций, как они обычно получают тип от переменной, функция возвращает так же, как в примере ниже.
let result: Response<JsonResponse> = Notwork.get(url, paramaters: nil, paramaterEncoding: .json)
Однако, как результат возвращается в затворе, как указать, что <T>
это?
Благодаря
Редактировать
Ниже приведен пример кода, который изображает ту же проблему.
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
}
показывают нам реализацию 'get' функции –
@RMenke я добавил пример, который показывает тот же вопрос, как метод GET имеет в там другие вещи, которые не связаны с этим вопросом, таких как кодирование параметров ЭСТ. –