Swift 2,如果具有关联值的枚举的case语法

时间:2016-02-20 23:42:58

标签: swift syntax enums swift2 pattern-matching

我想我会遇到一些非常简单的语法,但我找不到如何解决它。

  • 首先是设置,让我介绍一个包含多个关联值的精彩枚举

    enum Entity {
        case City(data: CityData, position: NSRange)
        case Date(date: NSDate)
        case Service
    }
    
  • 然后我想检查一些字典的字段是否是一个城市,如果是,请处理其数据和位置......我唯一可以管理的方法是 via 一个switch !!!

    if let city = result["ABC"] {
        switch city {
        case .City(data:let data, position:let position): // Do something with data and position
        default: // Do nothing
        }
    }
    

我想知道if case语法是否有任何帮助......

但是我找不到它(可能是疲倦,我希望......)

我正在寻找类似的东西:

if case result["ABC"] == .City(data:let data, position:let position) { 
    // Do something with data and position
}

所以我确信这很明显,但我错过了......所以,如果你能提供帮助,那就太棒了。

提前致谢。

1 个答案:

答案 0 :(得分:10)

Swift词典返回可选值。因此,使用switch,您应该:

switch result["ABC"] {
case let .City(data, position)?:
   // Do something with data and position
default:
  break
}

使用if模式匹配:

if case let .City(data, position)? = results["ABC"] {
  // Do something with data and position
}