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
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
case countryID = "country"
case cityID = "city"
Should be replaced by
case countryid = "country"
case cityid = "city"