带有对象的枚举案例

时间:2019-05-31 13:34:16

标签: swift enums

如何将对象放入emun盒中?没有switch语句是否可能?

enum ItemType {
    case person(Person)
    case dog(Dog)
    case cat(Cat)
}

var items = [ItemType]()


var dog = items[index] // Would like the actual dog object

1 个答案:

答案 0 :(得分:3)

您需要检查您的大小写是否正确(因为items[index]可能是猫或人)。

let item = items[index]
if case .dog(let dog) = item {
    // use `dog`
}

如果您打算大量访问它,可以在ItemType上添加一个计算属性。

extension ItemType {
    var dog: Dog? {
        switch self {
        case .dog(let dog): return dog
        default: return nil
        }
    }
}

请注意,这是可选的(因为并非每个ItemType都有一条狗)。但随后您可以说:

if let dog = items[index].dog { ... }