【发布时间】:2020-12-14 18:58:31
【问题描述】:
我想为未知枚举返回相同的值,
我在我的代码中定义了以下枚举,
public enum Airport: String {
case munich = "MUN_T01"
case sanFrancisco = "SANF_T02"
case singapore = "SP_T03"
public var name: String {
switch self {
case .munich:
return "Munich"
case .sanFrancisco:
return "San Francisco"
case .singapore:
return "Singapore"
}
}
每当我调用上述枚举时,它都可以正常工作
var airportName = Airport(rawValue: "MUN_T01")
print("Airport Name: ", airportName) // munich
print("Airport Code: ", airportName.rawValue) // MUN_T01
现在我想为其他/未知的场景介绍相同的内容,例如,
var unknownAirportName = Airport(rawValue: "Test_T01"),
当我打印 unknownAirportName 变量时应该打印 unknown 或 other 和
如果我打印unknownAirportName.rawValue,它应该打印Test_T01
在其他/未知情况之前我能够得到,但我无法打印通过的相同值 (Test_T01)。有什么帮助吗?
【问题讨论】:
-
Airport(rawValue: "Test_T01")应该生成一个nil项目,因为“默认代码”无法解析结果。相反,您需要提供自己的解析器代码,以便在找不到指定文本的匹配项时,可以返回unknown结果 -
您也可以为
case other = "Other"等其他场景创建一个案例,然后执行类似var unknownAirportName = Airport(rawValue: "Test_T01") ?? Airport.other的操作