简体   繁体   English

不符合协议 'Decodable' 和 'Encodable'

[英]does not conform to protocol 'Decodable' and 'Encodable'

hi programmers actually when I format my json as codable I faced to this error " type 'HomeViewControler'does not conform to protocol 'Decodable' and 'Encodable' " I saw similar questions but I didn't result, I happy to see your help thanks嗨程序员实际上,当我将 json 格式化为可编码时,我遇到了这个错误“类型'HomeViewControler'不符合协议'Decodable'和'Encodable'”我看到了类似的问题,但我没有结果,我很高兴看到你的帮助谢谢

here is my code:这是我的代码:

 class HomeViewController: UIViewController, UICollectionViewDataSource {

@IBOutlet weak var collectionView: UICollectionView!

var txt : String = "  "
var cid : String = "  "



override func viewDidLoad() {
    super.viewDidLoad()
    print("\n iiiiiiiiiid is \(cid)")
    
    collectionView.dataSource = self
}
struct welcomeJson: Codable {  // this is where i have this error
let userId : UserID
let isoGld , check : Bool
let image : [String]

let date, id , title,countryid,about , cityid, telephone, countryText,cityText, category, address, dateOfExpire , dateOfStart , offer , createdAt, updateAt,v : String
enum CodingKeys : String , CodingKey {
    case userId
    case isoGld
    case image
    case check
    case date
    case id = "_id"
    case title
    case countryID = "country"
    case cityID = "city"
    case telephone
    case countryText
    case cityText
    case category
    case address
    case dateOfExpire = "dateOfEx"
    case dateOfStart
    case offer
    case about
    case createdAt
    case updateAt
    case v = "__v"
}
}
struct UserID : Codable {
       let ID, name, userName , email, phone  : String
       enum CodingKeys : String , CodingKey {
           case ID = "Id"
           case name
           case userName
           case email
           case phone
       }
   }
   struct Data: Codable {
       var data : [welcomeJson]
   }
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
     return 5
 }
 
 func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "OfferCollectionViewCell", for: indexPath)
    return cell
    
 }
func fetchOffer() {
    
    if let url = URL(string: "http://5.63.13.16:8080/api/product/search/getByquerys?page=1&limit=10&city=\(cid)") {
        URLSession.shared.dataTask(with: url) {data,response,error in
            if let data = data {
                let jsondec = JSONDecoder()
                do {
                    let parsedJS = try jsondec.decode(Data.self, from: data)
                    for element in parsedJS.data {
                        print("adresssssetooo begooo : \(element.address) ")
                    }
                } catch {
                    print(error)
                }
            }
    }
}

and also I show in comment where I have this error我也在评论中显示我有这个错误

It's ,countryid,about, cityid, so它是,countryid,about, cityid,所以

case countryID = "country"
case cityID = "city"

Should be replaced by应该替换为

case countryid = "country"
case cityid = "city"

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM