swift - 提取枚举关联类型的实例
问题描述
我有以下
case noSpaces
case noCoverImage
case noSpacePhotos(for: Space)
case noName(for: Issue)
case noIssuePhotos(for: Issue)
case noIssueComment(for: Issue)
case noSpaceComment(for: Space)
当我发现错误时,我只想获取关联类型的实例。
} catch let error as MissingElementError {
//just get instance of associated type, if any
}
有没有办法在不写出 switch 语句和所有可能的情况下做到这一点?
解决方案
扩展 Jessy 的评论。
如果我让每种类型都符合协议,然后使用 Mirror...
protocol Reflectable {
var title: String { get }
}
struct Issue: Reflectable {}
struct Space: Reflectable {}
} catch let error as MissingElementError {
if let some = Mirror(reflecting: error).children.first?.1 as? Reflectable {
}
}
推荐阅读
- c++ - 是否可以将另一个类的函数实现为单独的类函数
- python - 当我尝试从下拉菜单中选择一个元素时,我不断收到错误消息
- java - 方法不在对象 myRecipeBox 中存储数据
- json - CHECK CONSTRAINT 使用正则表达式验证 JSON 字段
- javascript - 使用 Javascript 而不是 jQuery offset() 设置元素的动态位置
- typescript - 无法在 TypeScript 中使用新的 Promise()
- php - 如何通过从 SQL 中的相同数据集中缩小用户的数据集来过滤用户的数据集?- 61个加入限制问题
- r - 在 ggplot 中为趋势线添加单独的图例
- java - 关于获取 3 个实例变量并将其格式化为 HH:MM:SS + 更多的 Java 字符串格式化问题
- vb.net - API 中的舍入数 - VB.NET - CultureInfo