2017-07-05 73 views
0

這是我第一次使用這種枚舉,枚舉和關聯的值類型,我需要根據對象的類型創建一個switch聲明,我無法設法做到這一點,這是枚舉:Swift Switch case enquery

enum TypeEnum { 
    case foo(FooClass) 
    case doo(DooClass) 
    case roo(RooClass) 
} 

我的對象有TypeEnum類型的變量,現在我需要檢查哪些類型的對象是在枚舉:

if let anObject = object as? TypeEnum { 

    switch anObject { 
    case .foo(???): 
    return true 
    ... 
    default: 
     return false 
    } 

} 

我不知道要放什麼東西,而不是??? 。 Xcode告訴我要放些東西,但我只想打開.foo

任何想法?

+0

除真假之外,還有其他東西是否被返回?如果答案是否定的,那麼我現在就要使用'isKind(of:)'或'isMember(of:)'作爲你的類,你需要用你想使用的類的實例填寫.foo,不是你可能想要的 – Knight0fDragon

+3

[Swift Language Guide:Enumerations](https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Enumerations.html#//apple_ref/doc/uid/TP40014097- CH12-ID145)請閱讀*關聯值*部分。 – vadian

回答

4

您可以使用let,以捕獲該associated values:在所有

switch anObject { 
case .foo(let fooObj): 
    ... 
} 

或什麼,如果你不關心他們:

switch anObject { 
case .foo: 
    ... 
} 
+0

你是男人,謝謝。 – user2434385

0

你可以使用下劃線表示您對相關類型不感興趣:

case .foo(_): 
... 
+0

不錯,謝謝。 – user2434385