swift - 使用从超类继承的值创建字典
问题描述
我有多个类继承自一个类,是否可以为它们创建字典映射?所以我可以在给定字符串键的情况下引用正确的类。
let map = [String: EngineView] = [
"google": GoogleView,
"duckduckgo": DuckDuckGoView
]
GoogleView
和DuckDuckGoView
两个子类EngineView
,但 XCode 抱怨:
“无法将 'GoogleView.Type' 类型的值转换为预期的字典值类型 'EngineView'”
解决方案
假设GoogleView
并从您那里DuckDuckGoView
继承可以执行以下操作:EngineView
let map = [String: EngineView.Type] = [
"google": GoogleView.self,
"duckduckgo": DuckDuckGoView.self
]
用法
if let aClass = map["google"] {
let instance = aClass.init()
}
推荐阅读
- r - 在data.frame之类的列分配中回收时如何使R data.table抛出错误?
- excel - 删除包含搜索字符串的行的代码会跳过包含该字符串的某些行
- javascript - 将变量从 html 传递给 python
- python - 读取输入字符串并声明具有相同字符串名称的变量以在python中为其赋值
- ios - 在 tableView swift 的基础上拥有由谷歌文本提供支持
- r - 如何在 r 控制台的条件下打印出多个语句?
- ios - UITableViewCell 中的 UITextField 错误
- bpmn - Signal 在 BPMN 中可以有零个收件人吗?
- c# - WCF 服务未通过 https 从邮递员处命中
- python - 如何克服这个警告 -> RemovedInDjango110Warning: Operator '=' is deprecated and will be removed in Django 1.10. 改用'=='