Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以从Swift中的字符串获取枚举类型?_Swift - Fatal编程技术网

是否可以从Swift中的字符串获取枚举类型?

是否可以从Swift中的字符串获取枚举类型?,swift,Swift,是否可以从String获取Enum类型 ex: let type1 = WSCLogin.self <-- OK ex: let type2 = someFunction(typeString: "WSCLogin") -> WSCLogin.Type <-- issue 您可以使用以下枚举构造函数: let x: WSCLogin? = WSCLogin(rawValue: String) 如果字符串是有效的原始值,则这将提供一个可选变量,如果原始值无效,则该变量将提供一

是否可以从
String
获取
Enum
类型

ex: let type1 = WSCLogin.self <-- OK
ex: let type2 = someFunction(typeString: "WSCLogin") -> WSCLogin.Type <-- issue

您可以使用以下枚举构造函数:

let x: WSCLogin? = WSCLogin(rawValue: String)
如果字符串是有效的原始值,则这将提供一个可选变量,如果原始值无效,则该变量将提供一个值

// 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
因为我们正在通过
RawRepresentable
初始值设定项初始化
WSCLogin
,所以我们总是返回一个
可选的
类型。你只需要先打开这个


请注意,您不能将
类型
类型
用作属性名称,因为在这两种情况下,您都会遇到名称冲突。像这样的背勾

var `type`: WSCLogin.Type

您可以强制命名,但在这种情况下,您将覆盖此计算属性中使用的
type()
函数。

@jim谢谢,但我想从字符串中获取WSCLogin.type。所以您需要类似的内容吗<代码>let x=“mail”。键入;打印(x)将给出输出
WSCLogin
。请确认这是您想要说的,您的要求是confusing@jim想回答一下
someFunction(typeString:)
?@staticVoidMan谢谢,我没有someFunction(typeString:),我只是想找一个能解决这个问题的人,或者swift提供的人。所以。。。此函数接受一个字符串(类型的名称)并将其作为可用类型返回?
WSCLogin
是定义案例
邮件、密码
的枚举。不能使用枚举名(
WSCLogin
)初始化枚举。这不是使用枚举的方式/原因。您可以存储任何一种情况(邮件、密码),然后根据此值重新生成枚举。您可以通过另一种方式进行检查,但我不确定我是否看到了此类代码的意义,
“/(WSCLogin.self)”==“WSCLogin”
var `type`: WSCLogin.Type