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"
}
}
我有一个名为 '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"
}
}