快速获取名称存储在另一个变量中的类属性

标签 swift properties

如果我有一个包含类属性的数组“属性”

public class Circle {
  private var properties = ["radius", "diameter", "area", "perimeter"]

  public var radius: Double = 0.0
  public var diameter: Double = 0.0
  public var area: Double = 0.0
  public var perimeter: Double = 0.0

有什么方法可以使用数组获取属性的值吗?

我试过:

    public var description: String {
      var str = description()
      for label in properties {
          let value = label
          str +=  label + "\t\(self.(value))\n"
    }
    return str
}

但它不起作用,我如何使用存储在另一个变量(如“值”)中的属性名称来获取属性?

最佳答案

如果可以更新类以符合 NSObject,则可以使用 valueForKey: 方法

public class Circle: NSObject {
  private var properties = ["radius", "diameter", "area", "perimeter"]

  public var radius: Double = 0.0
  public var diameter: Double = 0.0
  public var area: Double = 0.0
  public var perimeter: Double = 0.0

  public var description: String {
    var str = description()
    for label in properties {
        let value = value(forKey: label)
        str +=  label + "\t\(label): \(value)\n"
  }
  return str
}

关于快速获取名称存储在另一个变量中的类属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45244648/

相关文章:

javascript - 以编程方式向 Javascript 中的对象添加属性

Java 属性注释标准/库

swift - 以编程方式设置照片库/相机

json - 使用 UISearchBar 文本搜索 UITableView 单元格

ios - 在 awakeFromNib() 上 - 错误实例成员 'button' 不能在类型 'CustomView' 上使用

C# WPF 迭代子项和更改属性的更好方法

json - FullCalendar - 向 Event 对象添加新属性

swift - Xcode如何实现下一个键盘按钮? ( swift )

ios - UICollectionView 水平滚动

java - 需要帮助理解两个 java gui 相关系统属性的影响