将 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]
假设我想这样做:
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]