如何将对象放入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
答案 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 { ... }