swift - 带对象的枚举案例
问题描述
怎么能把物体放在 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
解决方案
您需要检查您的案例是否正确(因为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 { ... }
推荐阅读
- android - 如何在 Android 中使用 Coil 为图像视图绘制边框?
- c - 在 C 中使用 va_arg 搜索键
- c# - 在 OVH 域上发布部署 ASP.NET Core MVC 站点
- node.js - 是否有 Json 格式的 ERD 表?
- c++ - 未定义引用“std::thread::_State@GLIBCXX_3.4.22 的 typeinfo”的原因?
- powerapps - 在没有高级计划的情况下使用 Web 服务是否有其他选择?
- python - ValueError:视图 users.views.logout_user 没有返回 HttpResponse 对象。它返回 None 而不是
- git - 只读存在的远程 git 分支
- python - PIL PNG与Gif背景
- java - JDK 7 RECV TLSv1 ALERT:致命,handshake_failure