是否可以从Enum
获取String
类型?
ex: let type1 = WSCLogin.self <-- OK
ex: let type2 = someFunction(typeString: "WSCLogin") -> WSCLogin.Type <-- issue
我可以将“ WSCLogin”另存为字符串
和字母,我想使用此字符串(“ WSCLogin”)实现WSCLogin.Type。
有可能吗?
谁能弄清楚someFunction(typeString: "WSCLogin") -> WSCLogin.Type
的功能?
谢谢
enum WSCLogin: String {
case mail
case password
}
答案 0 :(得分:1)
您可以使用以下枚举构造函数:
let x: WSCLogin? = WSCLogin(rawValue: String)
如果字符串是有效的原始值,这将为可选变量提供一个值;如果rawValue无效,则将提供nil
答案 1 :(得分:0)
// the type without a String
let type1 = WSCLogin.self
// the type with a String, without extension
let mail = WSCLogin(rawValue: "mail")
let type2 = type(of: mail)
// the type with a String, with extension
extension WSCLogin {
var kind: WSCLogin.Type {
return type(of: self)
}
}
let type3 = WSCLogin(rawValue: "mail")?.kind
因为我们正在通过WSCLogin
初始化程序初始化RawRepresentable
,所以我们总是会返回一个Optional
类型。您只需要先打开包装即可。
请注意,您不能使用type
或Type
作为属性名称,因为两种方式都可能导致名称冲突。像这样的反引号
var `type`: WSCLogin.Type
您可以强制命名,但在这种情况下,您将覆盖此计算属性中使用的type()
函数。