我有一个这样的函数,我可以提供2个不同的类(MyClass1或MyClass2):
func getClassName(anyobject: NSObject) -> String {
return anyobject.getClassName(); // <---- Howto do that ?
}
class MyClass1: NSObject {
}
class MyClass2: NSObject {
}
var myclass:MyClass1;
var sClassName:String=getClassName(myclass); <---- Howto get that ?
我想获取提供的对象的Classname。如何在swift中做到这一点?我想将我的类myclass提供给func getClassName(anyobject:NSObject)并获得结果“MyClass1”。
答案 0 :(得分:1)
添加此扩展程序
extension NSObject {
var theClassName: String {
return NSStringFromClass(self.dynamicType).componentsSeparatedByString(".").last!
}
}
class MyClass1: NSObject{
}
class MyClass2: NSObject {
}
func getClassName(obj: NSObject) -> String {
return obj.theClassName
}
var myClass: MyClass1 = MyClass1()
var sClassName: String = getClassName(myClass)
如果这是你要求的,请告诉我。
答案 1 :(得分:0)
如果使用静态var,则无需创建实例。
extension NSObject {
static var className: String { String(describing: self) }
}
例如在StroyBoard中
func changeWindow() {
let vc: UIViewController!
let storyboard = UIStoryboard(name: "Main", bundle: nil)
if Auth.auth().currentUser?.uid != nil {
//here
vc = storyboard.instantiateViewController(identifier: HomeViewController.className)
}
else {
vc = storyboard.instantiateViewController(identifier: LoginViewController.className)
}