获取Swift类的属性名称作为字符串

时间:2018-01-28 20:58:18

标签: swift reflection

如何将属性名称作为字符串获取?

class Person {
    var firstName: String
    var lastName: String
    var downloading: Bool

    func excludePropertiesFromCloud() -> [String] {
        return //here I want to return ["downloading"]
    }
}

如果变量名称稍后更改,我希望避免键入return ["downloading"]以防止错误。

要获取类名,您可以使用String(describing: Person.self),因此我正在查看类似于属性的内容。

注意:
虽然问题的标题与Get a Swift Variable's Actual Name as String非常相似,但很明显原始问题中接受的答案会返回属性的值,并且不会回答这个直截了当的问题。原始问题是第一个出现在任何谷歌搜索上的" Swift得到属性名称",答案回答了其他问题,正如@MarqueIV指出的那样。这就是我创建这个问题的原因

1 个答案:

答案 0 :(得分:3)

如果你可以制作你的属性@objc,你可以获得如下属性名称:

class Person {
    @objc var firstName: String
    var lastName: String
    var downloading: Bool

    func excludePropertiesFromCloud() -> [String] {
        return [#keyPath(firstName)]
    }
}