2016-02-20 44 views
2

我坚持一些非常简单的语法我猜,但我找不到如何解决它。Swift 2如果语法与枚举有关联的值

  • 的一切都在这里首先是安装,让我介绍一个不错的枚举与多个相关值

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

所以我敢肯定,这是显而易见的,但我已经错过了......所以,如果你的CA ñ帮助,这将是伟大的。

在此先感谢。

回答

9

Swift dictionaries返回可选值。因此,使用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 
} 
+0

活泉!大!非常感谢。我知道这很简单,但我一直在努力解决这个问题,所以我没有找到办法。无论如何,再次感谢华莱士! – Zaphod