首页 > 解决方案 > 提取枚举关联类型的实例

问题描述

我有以下

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 语句和所有可能的情况下做到这一点?

标签: swiftenums

解决方案


扩展 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 {

    }
} 

推荐阅读