【问题标题】:Swift Switch case on enum with Classes带有类的枚举上的 Swift Switch 案例
【发布时间】:2017-12-09 05:07:15
【问题描述】:

这是我第一次使用这种枚举,带有关联值类型的枚举,我需要根据对象的类型进行switch声明,我无法做到,这是枚举:

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

有什么想法吗?

【问题讨论】:

  • 除了真假之外,还有其他东西被返回吗?如果答案是否定的,那么我现在将使用 isKind(of:)isMember(of:) 作为您的课程,您需要在 .foo 中填写您要使用的课程实例,这可能不是您想要的
  • Swift Language Guide: Enumerations 请阅读关联值部分。

标签: swift enums switch-statement associated-value


【解决方案1】:

您可以为此使用let 捕获associated values

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

如果你不关心他们,全部

switch anObject {
case .foo:
    ...
}

请务必查看the Swift Programming Language book了解更多详情。

【讨论】:

    【解决方案2】:

    您可以使用下划线表示您对关联类型不感兴趣:

    case .foo(_):
    ...
    

    【讨论】:

      猜你喜欢
      • 2015-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-25
      • 1970-01-01
      • 1970-01-01
      • 2016-12-26
      相关资源
      最近更新 更多