'The data couldn’t be read because it isn’t in the correct format error
Hi guys I am trying get request when my model class like first I can get data but with second model I can get this error message "The data couldn’t be read because it isn’t in the correct format " please help me.
MODEL 1 with that I can reach data
struct Rocket: Codable {
let id : Int
let rocketID, rocketName, rocketType: String
enum CodingKeys: String, CodingKey {
case id = "id"
case rocketID = "rocket_id"
case rocketName = "rocket_name"
case rocketType = "rocket_type"
}
}
}
MODEL 2
with that I can't reach data, I get error
struct Rocket: Codable {
let id : Int
let firstStage: FirstStage
let rocketID, rocketName, rocketType: String
enum CodingKeys: String, CodingKey {
case id = "id"
case firstStage = "first_stage"
case rocketID = "rocket_id"
case rocketName = "rocket_name"
case rocketType = "rocket_type"
}
}
struct FirstStage: Codable {
let fuelAmountTons: Int
let burnTimeSEC: Int
enum CodingKeys: String, CodingKey {
case fuelAmountTons = "fuel_amount_tons"
case burnTimeSEC = "burn_time_sec"
}
}
NetworkManager
import Foundation
import Alamofire
typealias Success<T : Codable> = (BaseResponse<T>) -> Void
typealias Error = (BaseError) -> Void
final class NetworkManager: INetworkManager {
var config: NetworkConfig
required init(config: NetworkConfig) {
self.config = config
}
func fetch<T>(path: NetworkPath, paramaters: [String: String]?,
method: HTTPMethod,
onSuccess: @escaping (BaseResponse<T>) -> Void, onError: @escaping Error) where T: Decodable, T: Encodable {
AF.request(url(path),
method: method,
parameters: paramaters
).validate().responseDecodable(of: T.self)
{ (response) in
guard let model = response.value else {
onError(BaseError(afError: response.error))
return
}
onSuccess(BaseResponse.init(model: model, message: ""))
}
}
func url(_ path: NetworkPath) -> String
{
return config.baseUrl
//+ path.firebasePath()
}
}
ROCKET SERVİCE
class RocketService {
let service: INetworkManager
init(service: NetworkService) {
self.service = service.manager
}
func getAllRockets(onSucess: @escaping ([Rocket]) -> Void, onError: @escaping(BaseError) -> Void) {
service.fetch(path: .rockets, paramaters: nil, method: .get, onSuccess: { (response: BaseResponse<[Rocket]>) in
guard let rockets = response.model else {
onError(BaseError(message: "Not Found"))
return
}
onSucess(rockets)
print("başarılı")
}) { (error) in
onError(error)
print("asdasda")
}
}
}
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
