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

时间:2018-07-04 23:20:05

标签: swift swift4

我有这个 Hashtable<DecodeHintType, Object> decodeHints = new Hashtable<DecodeHintType, Object>(); decodeHints.put(DecodeHintType.TRY_HARDER, Boolean.TRUE); Result result = new UPCAReader().decode(bitmap, decodeHints);

enum

我可以像这样使用它:

public enum Format { case label(key: String) case textField(key: String) case image(key: String) }

Format.label(key: "abc")

Format.textField(key: "0.0")

当我尝试获取值时,我可以这样做:

Format.image(key: "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 } labeltextfield

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

如果我尝试使用以下方式: image

我得到了错误:

  

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

1 个答案:

答案 0 :(得分:0)

我可能会误解您的问题,但是为什么不使用switch

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
}

这使您可以对类型进行操作并获取值。