我有一个我想重用的函数,并让它接受 Decocable 结构的参数。例如,这是我当前代码的简化(假设“MyDecodableStruct”是应用程序其他地方声明的可解码结构):
static func getResults(url: String, parameters: Parameters) {
// On success REST response
if response.result.isSuccess {
struct Results: Decodable {
let items: [MyDecodableStruct]
}
if let jsonResults = try? JSONDecoder().decode(Results.self, from: response.data!) {
//success
}
}
而不是说“MyDecodableStruct”,我希望它是我作为参数传入的任何可解码结构。像这样的东西:
static func getResults(url: String, parameters: Parameters, myStruct: Decodable) {
// On success REST response
if response.result.isSuccess {
struct Results: Decodable {
let items: [myStruct]
}
if let jsonResults = try? JSONDecoder().decode(Results.self, from: response.data!) {
//success
}
}
我会这样称呼它
getResults(url: "url", parameters: nil, myStruct: MyDecodableStruct)
我无法弄清楚如何让它工作的语法。我得到的错误是
Type 'Results' does not conform to protocol 'Decodable'
Expected element type
有关处理此问题的最佳方法的任何想法?