我可以按名字上课吗?例如:
class Foo {
}
class Bar {
}
let x = "Foo"
classByString(x) // need to return Foo
我想使用元编程来减少代码维护。
答案 0 :(得分:4)
您可以使用NSClassFromString
:
if let anyObj : AnyObject.Type = NSClassFromString("MyAppName.MySwiftClassFoo") {
//call Foo
} else {
//call Bar
}
答案 1 :(得分:0)
你需要在同一个类中编写这样的方法,只需要传递你在代码中描述的类名。
func classByString(_ strClassName: String) -> String? {
if strClassName == self.debugDescription.components(separatedBy: ".")[1].components(separatedBy: ":")[0] {
print("class name :- \(strClassName)")
return strClassName
} else {
return nil
}
}