gpt4 book ai didi

ios - 类方法要求 'AFDataResponse' 符合 Encodable & Encodable

转载 作者:行者123 更新时间:2023-12-01 16:12:21 26 4
gpt4 key购买 nike

我在这里阅读了很多问题,但没有答案帮助我解决了这个错误,我的结构是 Codable 并且只使用像 String、Int 和 Double 这样的数据类型。

我将它们放在单独的文件中

struct Feature : Codable {
var property: Properties?
var geometry: Geometry?
}

struct Properties : Codable {
let pk: Int
var title: String = ""
var name: String = ""
//var added: Date
}

struct Geometry : Codable {
var type: String = ""
var coordinates: [Double]?
}

这是我得到错误的地方
CommunicationManager.request(endpoint: "url", onSuccess: { (response: AFDataResponse<Feature>) in
print(response)
})

这是我的方法的定义
import Alamofire

typealias APIHeaders = HTTPHeaders
typealias APIParameters = [String: Any]

enum APIMethod {
case get
case post
case delete
case put

fileprivate var value: HTTPMethod {
switch self {
case .get:
return HTTPMethod.get
case .post:
return HTTPMethod.post
case .delete:
return HTTPMethod.delete
case .put:
return HTTPMethod.put
}
}
}

enum APIEncoding {
case json
case url

fileprivate var value: ParameterEncoding {
switch self {
case .json:
return JSONEncoding.default
default:
return URLEncoding.default
}
}
}

class APIError {
var code: String?
var message: String?

init(message: String) {
self.code = nil
self.message = message
}
}

class APISessionManager: Session {
static let shared: APISessionManager = {
let configuration = URLSessionConfiguration.default
configuration.timeoutIntervalForRequest = 40
configuration.requestCachePolicy = .reloadIgnoringLocalAndRemoteCacheData
let manager = APISessionManager(configuration: configuration)
return manager
}()
}

class CommunicationManager {

class func request<T: Codable>(endpoint: String,
method: APIMethod = .get,
encoding: APIEncoding = .url,
parameters: APIParameters? = nil,
headers: APIHeaders? = nil,
onSuccess: @escaping (T) -> Void,
onFailure: ((APIError)-> Void)? = nil){

let request = APISessionManager
.shared
.request(endpoint,
method: method.value,
parameters: parameters,
encoding: encoding.value,
headers: headers)

request.responseJSON(completionHandler: { response in

guard response.error == nil else {
onFailure?(APIError(message: "error"))
return
}

guard let data = response.data else {
onFailure?(APIError(message: "error"))
return
}

guard let object = try? JSONDecoder().decode(T.self, from: data) else {
onFailure?(APIError(message: "error"))
return
}

onSuccess(object)
print(response)

})

}

}

我真的不知道该怎么办,人们提出的所有问题都得到了解决,因为他们使用了 Image,或者其他一些不使用 Codable 协议(protocol)的数据类型

最佳答案

在您描述的 API 中,onSuccess关闭需要 Feature值,而不是 AFDataResponse<Feature>值(value)。

关于ios - 类方法要求 'AFDataResponse<X>' 符合 Encodable & Encodable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61659996/

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