作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 API 响应返回一个类型不一致的 JSON 字段。因此,我去了https://www.quicktype.io寻求帮助并找到了一个模型。
这是我遇到问题的模型部分:
struct MyModel: Codable {
let id: ID?
}
enum ID: Codable {
case integer(Int)
case string(String)
init(from decoder: Decoder) throws {
let container = try decoder.singleValueContainer()
if let x = try? container.decode(Int.self) {
self = .integer(x)
return
}
if let x = try? container.decode(String.self) {
self = .string(x)
return
}
throw DecodingError.typeMismatch(ID.self, DecodingError.Context(codingPath: decoder.codingPath, debugDescription: "Wrong type for ID"))
}
func encode(to encoder: Encoder) throws {
var container = encoder.singleValueContainer()
switch self {
case .integer(let x):
try container.encode(x)
case .string(let x):
try container.encode(x)
}
}
}
我有一个完全解码的响应,当我尝试打印该值时,我得到如下信息:
Optional(MyApp.ID.integer(27681250))
或
Optional(MyApp.ID.string(27681250))
我是这样做的:
print(modelData?.id)
我想访问我得到的确切值,但我无法这样做。我试过将它转换为其他类型,但没有帮助。任何帮助表示赞赏。谢谢。
最佳答案
您可以通过多种不同的方式来做到这一点。所有这些都在 The Swift Programming Language 中进行了解释书在Enumerations部分。
这只是其中一种方式...
func example(id: ID) {
switch id {
case let .integer(value):
<#code#>
case let .string(value):
<#code#>
}
}
关于ios - 如何使用具有自定义初始值设定项的枚举类型值的解码结构中的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70363541/
我想成为 Spark 纱客户(link)。是否需要安装hadoop?还是只安装 yarn 可以吗? (by this link) 最佳答案 No Spark不需要Hadoop即可运行。 Apache
我是一名优秀的程序员,十分优秀!