Swift类型/泛型字典

时间:2015-03-05 01:20:23

标签: swift

我正在尝试在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)'

如何创建元类型字典?

1 个答案:

答案 0 :(得分:0)

您需要使用map而不是var声明let字典,以便更新:

static var map: Dictionary = [String: Foo.Type]()