I am getting the Errors Type 'CoinModel' does not conform to protocol 'Decodable', and Type 'CoinModel' does not conform to protocol 'Encodable''

here is my code,

struct CoinModel: Identifiable, Codable {
  let id, symbol, name: String
  let image: String
  let currentPrice: Double
  let marketCap, marketCapRank, fullyDilutedValuation: Double?
  let totalVolume, high24H, low24H: Int?
  let priceChange24H, priceChangePercentage24H, marketCapChange24H, marketCapChangePercentage24H: Double?
  let circulatingSupply, totalSupply, maxSupply, ath: Int?
  let athChangePercentage: Double?
  let athDate: String?
  let atl, atlChangePercentage: Double?
  let atlDate: String?
  let lastUpdated: String?
  let sparklineIn7D: SparklineIn7D?
  let priceChangePercentage24HInCurrency: Double?
  let currentHoldings: Double?
   
  enum CodingKeys: String, CodingKey {
    case id, symbol, name, image
    case currentPrice = "current_price"
    case marketCap = "market_cap"
    case marketCapRank = "market_cap_rank"
    case fullyDilutedValuation = "fully_diluted_valuation"
    case totalVolume = "total_volume"
    case high24H = "high_24h"
    case low24H = "low_24h"
    case priceChange24H = "price_change_24h"
    case priceChangePercentage24H = "price_change_percentage_24h"
    case marketCapChange24H = "market_cap_change_24h"
    case marketCapChangePercentage24H = "market_cap_change_percentage_24h"
    case circulatingSupply = "circulating_supply"
    case totalSupply = "total_supply"
    case maxSupply = "max_supply"
    case ath
    case athChangePercentage = "ath_change_percentage"
    case athDate = "ath_date"
    case atl
    case atlChangePercentage = "atl_change_percentage"
    case atlDate = "atl_date"
    case roi
    case lastUpdated = "last_updated"
    case sparklineIn7D = "sparkline_in_7d"
    case priceChangePercentage24HInCurrency = "price_change_percentage_24h_in_currency"
    case currentHoldings
   
  }
   
  func updateHoldings(amount: Double) -> CoinModel {
    return CoinModel(id: id, symbol: symbol, name: name, image: image, currentPrice: currentPrice, marketCap: marketCap, marketCapRank: marketCapRank, fullyDilutedValuation: fullyDilutedValuation, totalVolume: totalVolume, high24H: high24H, low24H: low24H, priceChange24H: priceChange24H, priceChangePercentage24H: priceChangePercentage24H, marketCapChange24H: marketCapChange24H, marketCapChangePercentage24H: marketCapChangePercentage24H, circulatingSupply: circulatingSupply, totalSupply: totalSupply, maxSupply: maxSupply, ath: ath, athChangePercentage: athChangePercentage, athDate: athDate, atl: atl, atlChangePercentage: athChangePercentage, atlDate: atlDate, lastUpdated: lastUpdated, sparklineIn7D: sparklineIn7D, priceChangePercentage24HInCurrency: priceChangePercentage24HInCurrency, currentHoldings: currentHoldings)
  }

  var currentHoldingsValue: Double {
    return (currentHoldings ?? 0) * currentPrice
  }

  var rank: Int {
    return Int(marketCapRank ?? 0)
  }
   
}

// MARK: - SparklineIn7D
struct SparklineIn7D: Codable {
  let price: [Double]?
}
Answered by OOPer in 680492022

As far as I tried with Xcode 12.5.1, this message was shown on the line case roi:

CodingKey case 'roi' does not match any stored properties

CoinModel.CodingKeys has a case named roi, but there is no stored property roi in CoinModel.

What is it for?

Accepted Answer

As far as I tried with Xcode 12.5.1, this message was shown on the line case roi:

CodingKey case 'roi' does not match any stored properties

CoinModel.CodingKeys has a case named roi, but there is no stored property roi in CoinModel.

What is it for?

I fixed the error by getting. rid of that roi line

Actually, it didn't fix the error.

Be happy...


struct CoinModel: Identifiable, Codable {
	let id, symbol, name: String
	let image: String
	let currentPrice: Double
	let marketCap, marketCapRank, fullyDilutedValuation: Double?
	let totalVolume, high24H, low24H: Double?
	let priceChange24H, priceChangePercentage24H: Double?
	let marketCapChange24H: Double?
	let marketCapChangePercentage24H: Double?
	let circulatingSupply, totalSupply, maxSupply, ath: Double?
	let athChangePercentage: Double?
	let athDate: String?
	let atl, atlChangePercentage: Double?
	let atlDate: String?
	let lastUpdated: String?
	let sparklineIn7D: SparklineIn7D?
	let priceChangePercentage24HInCurrency: Double?
	let currentHoldings: Double?
	
	enum CodingKeys: String, CodingKey {
		case id, symbol, name, image
		case currentPrice = "current_price"
		case marketCap = "market_cap"
		case marketCapRank = "market_cap_rank"
		case fullyDilutedValuation = "fully_diluted_valuation"
		case totalVolume = "total_volume"
		case high24H = "high_24h"
		case low24H = "low_24h"
		case priceChange24H = "price_change_24h"
		case priceChangePercentage24H = "price_change_percentage_24h"
		case marketCapChange24H = "market_cap_change_24h"
		case marketCapChangePercentage24H = "market_cap_change_percentage_24h"
		case circulatingSupply = "circulating_supply"
		case totalSupply = "total_supply"
		case maxSupply = "max_supply"
		case ath
		case athChangePercentage = "ath_change_percentge"
		case athDate = "ath_date"
		case atl
		case atlChangePercentage = "atl_change_percentage"
		case atlDate = "atl_date"
		case lastUpdated = "last_updated"
		case sparklineIn7D = "sparkline_in_7d"
		case priceChangePercentage24HInCurrency = "price_change_percentage_24h_in_currency"
		case currentHoldings
	}
	
	func updateHoldings(amount: Double) -> CoinModel {
		return CoinModel(id: id, symbol: symbol, name: name, image: image, currentPrice: currentPrice, marketCap: marketCap, marketCapRank: marketCapRank, fullyDilutedValuation: fullyDilutedValuation, totalVolume: totalVolume, high24H: high24H, low24H: low24H, priceChange24H: priceChange24H, priceChangePercentage24H: priceChangePercentage24H, marketCapChange24H: marketCapChange24H, marketCapChangePercentage24H: marketCapChangePercentage24H, circulatingSupply: circulatingSupply, totalSupply: totalSupply, maxSupply: maxSupply, ath: ath, athChangePercentage: athChangePercentage, athDate: athDate, atl: atl, atlChangePercentage: atlChangePercentage, atlDate: atlDate, lastUpdated: lastUpdated, sparklineIn7D: sparklineIn7D, priceChangePercentage24HInCurrency: priceChangePercentage24HInCurrency, currentHoldings: amount)
	}
	
	var currentHoldingsValue: Double {
		return (currentHoldings ?? 0) * currentPrice
	}
	
	var rank: Int {
		return Int(marketCapRank ?? 0)
	}
}

struct SparklineIn7D: Codable {
	let price: [Double]?
}
I am getting the Errors Type 'CoinModel' does not conform to protocol 'Decodable', and Type 'CoinModel' does not conform to protocol 'Encodable''
 
 
Q