ios - 不符合协议 'Decodable' 和 'Encodable'
问题描述
嗨程序员实际上当我将我的 json 格式化为可编码时我遇到了这个错误“类型'HomeViewControler'不符合协议'Decodable'和'Encodable'”我看到了类似的问题但我没有结果,我很高兴看到你的帮助谢谢
这是我的代码:
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)
}
}
}
}
我也在评论中显示我有这个错误
解决方案
就是,countryid,about , cityid,
这样
case countryID = "country"
case cityID = "city"
应该替换为
case countryid = "country"
case cityid = "city"
推荐阅读
- java - JPA Postgres - 无法将动态 JSON 转换为 Java 类型
- matlab - 在 uitab 上创建具有多个轴的图。在 Matlab 中使用 addaxis
- java - Java 8:如何检查对象的所有字段是否为 NULL,除了一个
- user-interface - 我想从剪贴板复制、粘贴和剪切 CEdit 中的内容
- powershell-3.0 - 在 power-shell 工作流中使用 CSV 导入
- reactjs - 如何从客户端在 S3 中上传大型媒体文件?
- sql - 查询地理坐标内的所有点
- oracle - Oracle 10 G 中的条件索引 | REGEXP_REPLACE 函数
- sql - 选择sql组中的不同列
- python - 通过python同步拉取确认pubsub消息不起作用