Я читал здесь много вопросов, но ни один ответ не помог мне решить эту ошибку, моя структура Codable и использует только такие типы данных, как String, Int и Double.
У меня они есть отдельно files
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