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

标签 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 get property name”的谷歌搜索中,答案回答了其他问题,正如@MarqueIV 所指出的那样。这就是我提出这个问题的原因

最佳答案

如果您可以将您的属性设置为@objc,您可以像这样获取属性名称:

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

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

关于swift - 获取 Swift 类的属性名称作为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48491219/

相关文章:

ios - 如何将事件添加到 FSCalendar Swift?

visual-studio-2010 - 查找子类和实现

c# - 反射(reflection):如何获得泛型方法?

ruby - 获取当前正在执行的方法的名称

ios - 如何在 Core Data 中顺序存储数据?

swift - Swift 字典中一个键的多个值

c# - 是否可以使用反射连接匿名委托(delegate)?

c# - C#中的反射修改类中的私有(private)常量字段

swift - 将 Swift 字符串解析为日期,然后是组件

ios - iOS 10 中的 UIActivityViewController