olv*_*rwn 2 swift swift-protocols codable decodable
我有一个名为 ObjectAPIModel 的类型,它明确符合 Codable 协议。我还有一个函数,它接收一些数据并调用另一个函数将任何 JSON 解码为指定类型。但是如果我调用decodeJSON(),它会显示一个错误,指出ObjectAPIModel 不符合Decodable。有人可以帮忙吗?
struct ObjectAPIModel: Codable {
let objectID: Int
var primaryImage: String
var title: String
var department: String
}
Run Code Online (Sandbox Code Playgroud)
func decodeJSON<T: Decodable>(data: Data, ofType: T) -> Result<T, APIError> {
let decodedObject = try? JSONDecoder().decode(T.self, from: data)
if decodedObject == nil {
return .failure(APIError.emptyResponse)
} else {
return .success(decodedObject!)
}
}
Run Code Online (Sandbox Code Playgroud)
let result = decodeJSON(data: unwrappedData, ofType: ObjectAPIModel)
Run Code Online (Sandbox Code Playgroud)
我收到错误:“类型‘ObjectAPIModel.Type’不能符合‘Decodable’”
在下面的行中
func decodeJSON<T: Decodable>(data: Data, ofType: T) -> Result<T, APIError>
Run Code Online (Sandbox Code Playgroud)
该参数ofType被声明为 的实例,T并且您正在尝试传递类型元对象。更改声明如下:
func decodeJSON<T: Decodable>(data: Data, ofType: T.Type) -> Result<T, APIError>
// ^^^^
Run Code Online (Sandbox Code Playgroud)
另外,当你调用时,decodeJSON你不能使用裸类型名称,你必须输入ObjectAPIModel.selfie
let result = decodeJSON(data: unwrappedData, ofType: ObjectAPIModel.self)
// ^^^^
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
721 次 |
| 最近记录: |