2017-07-05 48 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