如何在Swift中为一把钥匙解码两种可能的类型?
我有一个可编码的结构,用于解码传入的JSON。不幸的是,有时它的一个键值是字符串,有时是浮点值。我能够在下面的几个do/try/catch块中拼凑出它来工作,但是有更好的方法来处理这个问题吗如何在Swift中为一把钥匙解码两种可能的类型?,swift,codable,Swift,Codable,我有一个可编码的结构,用于解码传入的JSON。不幸的是,有时它的一个键值是字符串,有时是浮点值。我能够在下面的几个do/try/catch块中拼凑出它来工作,但是有更好的方法来处理这个问题吗 struct Project: Codable { public let version: Float init(from decoder: Decoder) throws { var decodedVersion: Float = 1.0 do {
struct Project: Codable {
public let version: Float
init(from decoder: Decoder) throws {
var decodedVersion: Float = 1.0
do {
decodedVersion = try values.decode(Float.self, forKey: .version)
} catch {
do {
if let inVersion = try Float(values.decode(String.self, forKey: .version)) {
decodedVersion = inVersion
}
} catch {
throw error
}
}
version = decodedVersion
}
}
如果在JSON中,与键关联的值有时可以是
Float
,有时是String
(除了在后端修复此错误,请参见链接重复问题中的公认答案,其中他处理字符串或整数。事实上,与您的解决方案非常类似。您也可以使用此要点非常好嘿,我使用此解决方案,我能够解析一个键的字符串和Int,并获得量子值。那么,我如何才能是否将QuantumValue转换为Int或String?@Rob嗨,我在我的answer@LucaAngeletti非常感谢!我认为这是一个非常合适的解决方案。很好。