Swift ViewController class 名称为字符串

Swift ViewController class name as String

我有一个名为 'MyViewController' 的 viewController,我想在其中将一些值保存为用户默认值。作为关键,我想使用 class 名称 "MyViewController" 并附加一些字符串。是否可以在 Swift 中从 class 名称中获取字符串?感谢您的帮助:)

class MyOwnClass {    
}

var myVar1 = NSString()
var myVar2 = MyOwnClass()

println(_stdlib_getTypeName(myVar1))    // Gives "NSString"
println(_stdlib_getTypeName(myVar2))    // Gives "_TtC15__lldb_expr_26410MyOwnClass"

可能有更好的方法来做到这一点,但据我所知,您可以通过 classForCoder() (NSObject subclass只有 es)。从那里,您可以使用 NSStringFromClass 将 class 名称转换为 NSString。唯一的问题是名字经常会被破坏,也许是“__lldb_expr_690.MyViewController”。您可以通过显式设置名称来解决这个问题,例如:

@objc(MyViewController) class MyViewController: UIViewController {
    func aMethod() {
        let defaults = NSUserDefaults.standardUserDefaults()

        defaults.setObject("Some Object", forKey: NSStringFromClass(self.classForCoder))
        defaults.synchronize()
        // Has set "Some Object" for key "MyViewController"
    }
}