首页 > 解决方案 > 使用从超类继承的值创建字典

问题描述

我有多个类继承自一个类,是否可以为它们创建字典映射?所以我可以在给定字符串键的情况下引用正确的类。

let map = [String: EngineView] = [
  "google": GoogleView,
  "duckduckgo": DuckDuckGoView
]

GoogleViewDuckDuckGoView两个子类EngineView,但 XCode 抱怨:

“无法将 'GoogleView.Type' 类型的值转换为预期的字典值类型 'EngineView'”

标签: swift

解决方案


假设GoogleView并从您那里DuckDuckGoView继承可以执行以下操作:EngineView

let map = [String: EngineView.Type] = [
  "google": GoogleView.self,
  "duckduckgo": DuckDuckGoView.self
]

用法

if let aClass = map["google"] {
    let instance = aClass.init()
}

推荐阅读