Reputation: 11645
I have a function like this, which I can provide 2 different classes (MyClass1 or 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 ?
I would like to get the Classname of an provided object. Howto do that in swift ? I would like to provide my Class myclass to the func getClassName(anyobject: NSObject) and get the result "MyClass1".
Upvotes: 0
Views: 65
Reputation: 875
If use static var ,you don't need to make instance.
extension NSObject {
static var className: String { String(describing: self) }
}
For example in 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)
}
Upvotes: 0
Reputation: 1950
Add this extension
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)
Let me know if this is what you asked for.
Upvotes: 1