gpt4 book ai didi

swift - 无法用闭包推断通用参数 'T'

转载 作者:搜寻专家 更新时间:2023-10-31 08:15:22 25 4
gpt4 key购买 nike

我下面有一个静态函数,它将执行 GET请求然后尝试将数据解析为任何 <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 My {
static func function<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"
My.function { (response) in

}

最佳答案

您需要在调用函数时明确告知类型。如果您需要 String,则使用 String 类型调用它。

MyClass.myFunction { (response: String) in

}

关于swift - 无法用闭包推断通用参数 'T',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36839763/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com