swift - Swift Decodable Class 不符合
问题描述
我是 Swift 的新手,并且对可解码类有一点麻烦。我收到关于此类的错误:类型“VoucherCode”不符合协议“Decodable”
我在另一个项目中具有完全相同的语法,没有来自教程的错误。
如果没有发布的行,该类可以工作并从相关的 json 中解码。
请问我错过了什么?
import Foundation
class VoucherCode: Decodable, Identifiable, ObservableObject {
@Published var logoData: Data?
var id:UUID?
var title: String?
var voucherCode: String?
var details: String?
var logo: String?
var url: String?
var termsAndConditions: String?
var highlight: String?
var whoFor:[String]?
func getLogoData() {
guard logo != nil else {
return
}
if let url = URL(string: logo!) {
let session = URLSession.shared
let dataTask = session.dataTask(with: url) { (data, response, error) in
if error == nil {
DispatchQueue.main.async {
self.logoData = data!
}
}
}
dataTask.resume()
}
}
}
CodeWithChris 课程中的类似课程(有效)。没有错误,它可以工作。
解决方案
将此添加到您的课程中:
private enum CodingKeys: String, CodingKey {
case id, title, voucherCode, details, logo, url, termsAndConditions, highlight, whoFor
}
这将从可解码中排除 logoData 并使 VoucherCode 可解码。
推荐阅读
- python - 如何使用 OpenCV 保存 png 图像
- html - Mac的电子签名
- python - Python编程题——数字和整数与除法
- java - 从 System.in 读取时,如何防止 java.util.Scanner 抛出 NoSuchElementException?
- python - 如何使用 CreateUserForm 在迁移中填充 Django 数据库
- github - Github 仅从匹配模式的分支合并到“主”
- mongodb - 如何使用服务器连接错误解决 mongodump 错误代码 0?
- sequelize.js - 用列名在引用表中使用现有关联 Id 急切地创建()
- python - 安装期间出现 Patchman 错误 ModuleNot Found Error: 'importlib.metadata' --python3-patchman
- powershell - Powershell:我在另一台机器上调用一个函数,输出延迟到本地脚本结束。我怎样才能使它同步?