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

Zap*_*hod 2 syntax enums pattern-matching swift swift2

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

  • 首先是这里的设置,让我介绍一个带有多个相关值的漂亮枚举

    enum Entity {
        case City(data: CityData, position: NSRange)
        case Date(date: NSDate)
        case Service
    }
    
    Run Code Online (Sandbox Code Playgroud)
  • 然后,我想检查是否存在字典的领域是一个城市,如果是,则处理其数据和位置......我可以管理的唯一方法是通过一个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
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)

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

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

我正在寻找类似的东西:

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

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

提前致谢.

Wal*_*pos 10

Swift词典返回可选值.所以,使用switch,你应该这样做:

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

使用if模式匹配:

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