gpt4 book ai didi

swift - 具有 String 表示形式的 Int 枚举

转载 作者:行者123 更新时间:2023-11-28 10:32:17 26 4
gpt4 key购买 nike

我想要一个 Int 枚举,它也可以被“序列化”为 Int 或 String。

enum Fruits : Int {
case Banana = 1
case Apple = 123
}

let favorite = Frutis(fromRaw: 1)
let banana = Fruits(from: "Banana")
assert(favorite==banana)
assert(favorite.rawValue == 1)
assert(String(describing: favorite) == "Banana")

如果不为所有情况自己实现 init(fromRaw:) 和 init(from:),我怎么能做到这一点?枚举包含许多条目,我想避免臃肿的代码。

最佳答案

我从支持所有转换的链接答案中将其放在一起。

enum Fruits : Int, CaseIterable {
case banana = 1
case apple = 123

init?<S: StringProtocol>(_ string: S) {
guard let value = Fruits.allCases.first(where: { "\($0)" == string }) else {
return nil
}
self = value
}
var stringRepresentation: String {
return "\(self)"
}
}

let favorite = Fruits(rawValue: 123)!
let apple = Fruits("apple")!
assert(favorite == apple)
assert(favorite.rawValue == 123)
assert(String(describing: favorite) == "apple")

关于swift - 具有 String 表示形式的 Int 枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55519949/

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