gpt4 book ai didi

Swift:枚举大小写不是 'String' 类型的成员,强制使用原始值

转载 作者:搜寻专家 更新时间:2023-11-01 06:28:16 25 4
gpt4 key购买 nike

我有字符串枚举:

enum Country:String {
case France
case Germany
case UnitedStates
}

但是我想根据 uibutton restorationIdentifier 做一些事情。

我有这个想法:

@IBAction func countrySelection(_ sender: UIButton) {
guard let selection:String = sender.restorationIdentifier else { return}
switch selection {
case Country.France:

default:
return
}
}

但是我在这一行遇到了这个错误:

Enum case 'France' 不是 'String' 类型的成员

代码行:

案例国家.法国:

我可以修复错误,将该行更改为:

案例 Country.France.rawValue

但我的问题是,为什么我需要或强制使用原始值?

非常感谢您的帮助。

最佳答案

您正在尝试将 StringCountry 值进行比较。他们不是同一类型。如您所述,您可以将 switch cases 更改为 String:Country.France.rawValue

或者您可以将 String 转换为 Country 值:

@IBAction func countrySelection(_ sender: UIButton) {
guard let selection = sender.restorationIdentifier else { return }
guard let country = Country(rawValue: selection)

switch country {
case .France:
// handle France
default:
return
}
}

注意:这并不是 restorationIdentifier 的真正用途。

关于Swift:枚举大小写不是 'String' 类型的成员,强制使用原始值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51005938/

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