Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.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_Swift4 - Fatal编程技术网

Swift-使用参数获取枚举中的大小写和值

Swift-使用参数获取枚举中的大小写和值,swift,swift4,Swift,Swift4,我有这个enum public enum Format { case label(key: String) case textField(key: String) case image(key: String) } 我可以像这样使用它: Format.label(键:“abc”) Format.textField(键:“0.0”) Format.image(键:“mystringfile”) 当我尝试获取值时,我可以使用以下方法: let control = Forma

我有这个
enum

public enum Format {
    case label(key: String)
    case textField(key: String)
    case image(key: String)
}
我可以像这样使用它:

Format.label(键:“abc”)

Format.textField(键:“0.0”)

Format.image(键:“mystringfile”)

当我尝试获取值时,我可以使用以下方法:

let control = Format.label(key: "abc")
if case let Format.label(key) = control {
    tmp = key
} else if case let Format.image(key) = control {
    tmp = key
} else if case let Format.textField(key) = control {
    tmp = key
}
有了它,我可以得到值,但我找不到大小写
标签
文本字段
图像

如何找到属于该变量的枚举

如果我试着使用这样的东西:
control==Format.label

我得到一个错误:

二进制运算符“==”不能应用于类型为的操作数 “Table.Format”和“(String)->Format”


我可能误解了你的问题,但为什么不使用开关呢

let control = Format.label(key: "abc") // or = Format.textField(key: "whatever") or = Format.image(key: "whatever")

let tmp: String
switch control {
case .label(let key):
    // It's a label, do what you need
    tmp = key
case .textField(let key):
    // It's a textField, do what you need
    tmp = key
case .image(let key):
    // It's a image, do what you need
    tmp = key
}
这允许您对类型进行操作并获取值