gpt4 book ai didi

ios - 无法使用类型为“([T.Type],来自 : Data) 的参数列表调用 'decode'

转载 作者:搜寻专家 更新时间:2023-11-01 06:59:58 27 4
gpt4 key购买 nike

我目前正在尝试制作一个解析器,它将接受一个包含字典数组的 json 响应。我已经让它为 json 响应工作,它以下列方式保存字典

func decodeResult<T: Decodable>(model: T.Type, result: NSDictionary) -> (model: T?, error: Error?) {
do {
let jsonData = try JSONSerialization.data(withJSONObject: result, options: .prettyPrinted)
let modelObject = try JSONDecoder().decode(model.self, from: jsonData)
return (modelObject, nil)
} catch let error {
return (nil, error)
}
}

现在我尝试基本上做同样的事情,但要得到一个数组结果。到目前为止,我已经创建了这个

func decodeResult<T: Decodable>(model: T.Type, result: NSArray) -> (model: [T]?, error: Error?) {
do {
let jsonData = try JSONSerialization.data(withJSONObject: result, options: .prettyPrinted)
let modelObject = try JSONDecoder().decode([model].self, from: jsonData)
return (modelObject as? [T], nil)
} catch let error {
return (nil, error)
}
}

但是它在 JSONDecoder 上给我一个错误,它说 无法使用类型为 '([T.Type], from:Data) 的参数列表调用 'decode' ' 有谁知道为什么会发生这种情况以及我在这里忘记导致此错误的原因吗?

如果我不使用泛型类型而只使用我的 Chat 模型(例如),它会工作得很好。

最佳答案

我刚刚意识到我忘记更改我的代码以及为什么它不起作用,所以我想我会在这里与遇到相同问题的任何人分享解决方案。

我忘记制作类型为 [T]model 输入,这就是它无法解码给定模型的原因。所以这使得整个工作代码看起来像这样

func decodeResult<T: Decodable>(model: [T].Type, result: NSArray) -> (model: [T]?, error: Error?) {
do {
let jsonData = try JSONSerialization.data(withJSONObject: result, options: .prettyPrinted)
let modelObject = try JSONDecoder().decode(model.self, from: jsonData)
return (modelObject, nil)
} catch let error {
return (nil, error)
}
}

关于ios - 无法使用类型为“([T.Type],来自 : Data) 的参数列表调用 'decode',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51401611/

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