我正在尝试在Swift中定义元类型的字典。元类型都来自已知的基类,并且每个元类型都必须使用每个元类型唯一的字符串值进行注册。
我有以下代码:
class Foo {
private struct Registry {
static let map: Dictionary = [String: Foo.Type]()
}
class func registerType<T: Foo>(typeId: String, classType: T.Type) {
Registry.map[typeId] = classType
}
}
但是,这会在“registerType”方法中返回错误消息:
'@lvalue $T6' is not identical to '(String, Foo.Type)'
如何创建元类型字典?
答案 0 :(得分:0)
您需要使用map
而不是var
声明let
字典,以便更新:
static var map: Dictionary = [String: Foo.Type]()