2017-07-21 40 views
0

如果我有一個數組「屬性」我的同班同學迅速獲取類屬性存儲在另一個變量

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 
} 

,但它不工作,我怎麼能得到的屬性,使用存儲在像「價值」的另一個變量自己的名字?

+0

您的代碼應該工作。從這段代碼中刪除'self.':'str + = label +「\ t \(self。(value))\ n」'。 –

回答

0

如果你可以更新類符合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 
}