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

在Swift中,将类作为值存储在字典中的语法是什么?,swift,gamekit,gameplay-kit,Swift,Gamekit,Gameplay Kit,假设我想这样做: class foobar : NSObject { //method declarations, etc. } 随后: let myDictionary:Dictionary = ["returnMeAnAwesomeClass":foobar] 不起作用 如果我输入foobar.Type,它也不起作用 如果我将foobar.class作为foobar.Type输入,它也不起作用 我之所以要这样做,是因为系统API中有一个方法将类作为参数,例如: func enterSta

假设我想这样做:

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

let myDictionary:Dictionary = ["returnMeAnAwesomeClass":foobar]
不起作用

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

如果我将
foobar.class
作为
foobar.Type
输入,它也不起作用

我之所以要这样做,是因为系统API中有一个方法将类作为参数,例如:

func enterState(_ stateClass: AnyClass) -> Bool
(在机器中)


我认为可以获取字符串并将其转换为类。

如果需要获取类类型,可以使用
foobar.self
。此外,还应将类型安全性添加到词典中:

let myDictionary: [String:AnyClass] = ["returnMeAnAwesomeClass": foobar.self]
如果在声明字典的同一位置初始化字典,则可以跳过类型声明,因为编译器会推断:

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

然后尝试
NSClassFromString
不起作用。这是我尝试的第一件事。。。当我回到电脑前,我会给你发错误信息。。也许是因为我在操场上?结果证明你是对的。问题是我试图使用数组作为键类型。不起作用。但是,当我使用NSArray作为键类型时,它是有效的。所以:
让myDictionary:[NSArray:AnyClass]=[“route”,“to”,“class”:customGKState.self]
等等。它工作得很好。如果您所引用的类(如foobar.self)位于代码中的位置之上,它也会有所帮助。