将 Class 作为值存储在 Swift 中的字典中的语法是什么?

What is the syntax to store a Class as a value in a Dictionary in Swift?

假设我想这样做:

class foobar : NSObject {
//method declarations, etc.
}

然后:

let myDictionary:Dictionary = ["returnMeAnAwesomeClass":foobar]

无效。

如果我输入foobar.Type,它也不起作用。

如果我把 foobar.class 写成 foobar.Type,它也不起作用。

我想要这个的原因是因为系统 API 中有一个方法将 class 作为参数,例如:

func enterState(_ stateClass: AnyClass) -> Bool

(在 GKStateMachine 中)

我认为能够获取字符串并将其转换为 class。

如果需要获取class类型可以使用foobar.self。而且你应该在你的字典中添加类型安全:

let myDictionary: [String:AnyClass] = ["returnMeAnAwesomeClass": foobar.self]

如果您在声明字典的同一位置初始化字典,则可以跳过类型声明,因为编译器会推断它:

let myDictionary = ["returnMeAnAwesomeClass": foobar.self]