首页 > 解决方案 > 带对象的枚举案例

问题描述

怎么能把物体放在 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

标签: swiftenums

解决方案


您需要检查您的案例是否正确(因为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 { ... }

推荐阅读