2016-02-20 40 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