使用从超类继承的值创建字典

  • 本文关键字:创建 字典 继承 超类 swift
  • 更新时间 :
  • 英文 :


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

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

GoogleViewDuckDuckGoView都是EngineView子类,但XCode抱怨:

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

假设GoogleViewDuckDuckGoView继承自EngineView,你可以做这样的事情:

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

用法

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

最新更新