无法使用类型为“([T.Type], from: Data) 的参数列表调用 'decode'
Cannot invoke 'decode' with an argument list of type '([T.Type], from: Data)
我目前正在尝试制作一个解析器,它将接受 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
上给我一个错误,它说它 cannot invoke 'decode' with an argument list of type '([T.Type], from:Data)'
有谁知道为什么会发生这种情况以及我在这里忘记导致此错误的原因吗?
如果我不使用通用类型来执行此操作,但只使用我的 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)
}
}
我目前正在尝试制作一个解析器,它将接受 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
上给我一个错误,它说它 cannot invoke 'decode' with an argument list of type '([T.Type], from:Data)'
有谁知道为什么会发生这种情况以及我在这里忘记导致此错误的原因吗?
如果我不使用通用类型来执行此操作,但只使用我的 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)
}
}