#KeyPath在Swift中获取变量或方法名称

时间:2018-02-11 14:28:53

标签: swift

我正在阅读文档但无法获得某些工作。我想在类或结构中获取方法或变量名称。在Swift 3中,您显然可以使用#KeyPath。在Swift 4中它更容易。我无法上班。

我希望字符串变量名称包含“Bar”。

这是我的Playground代码。

//: Playground - noun: a place where people can play

class Foo {
    public var Bar:String {
        get {
            return "xxx"
        }
    }
}

var name = \Foo.Bar
print ("Member function name \(name) should be Bar")

提前感谢您阅读我的问题。

1 个答案:

答案 0 :(得分:2)

我想你想在运行时获得一个成员的名字?

显然,当您打印键路径时,它不会打印该成员的名称。作为替代方案,您可以使用选择器:

class Foo {
    // needs to be exposed to Obj-C
    @objc public var Bar:String {
        get {
            return "xxx"
        }
    }
}

var name = #selector(getter: Foo.Bar)
print ("Member function name \(name) should be Bar")

打印:

  

会员功能名称栏应为Bar