gpt4 book ai didi

iOS - 如何声明类型未知的 Swift 枚举属性?

转载 作者:行者123 更新时间:2023-11-30 11:26:27 25 4
gpt4 key购买 nike

我正在尝试创建一个 Swift 枚举,该枚举将声明 Type 的属性,以便我可以从 JSONDecoder() 中调用 Enum.type。解码 调用。我想了解以下内容:

  1. 这在 Swift 中可能实现吗?
  2. 语法是什么样的?

我进行了以下尝试:

enum Item {
case property1, property2, property3

var type: Any<T> {
switch self {
case .property1: return ACustomObjectType
case .property2: return AnotherCustomObjectType
case .property3: return AThirdCustomObjectType
}
}
}

现在显然这不能编译,但我想从中调用它的部分看起来像:

JSONDecoder().decode(Item.type, from: data)

也完全有可能我只是想变得过于聪明,并且有一个更简单的解决方案。

最佳答案

尝试这个解决方案

class CustomObject:Decodable {
var id:String
var name: String
var age: String
}

class ACustomObject: CustomObject {

}

class AnotherCustomObject: CustomObject {

}

class AThirdCustomObject:CustomObject {

}


enum Property {
case property1
case property2
case property3

var type:CustomObject.Type {
get {
switch self {
case .property1: return ACustomObject.self
case .property2: return AnotherCustomObject.self
case .property3: return AThirdCustomObject.self
}
}
}


}
let dic = ["id": "122342", "name": "stackoverflow", "age": "22"]

let json = try! JSONSerialization.data(withJSONObject: dic, options: .prettyPrinted)

do {
let result = try JSONDecoder().decode(Property.property1.type, from: json)
print(result.name)

}catch {
print(error)
}

关于iOS - 如何声明类型未知的 Swift 枚举属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50690969/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com