2017-07-21 4 views
0

gespeichert Wenn ich ein Array „Eigenschaften“ mit den Eigenschaften meiner Klasseswift get Klasseneigenschaften mit dem Namen einer anderen Variablen

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 

ist es eine Möglichkeit haben, die Eigenschaften Werte mit dem Array zu bekommen ..?

Ich habe versucht:

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

aber es funktioniert nicht, wie kann ich die Eigenschaften erhalten, indem sie ihre Namen in einer anderen Variablen wie „Wert“ gespeichert?

+0

Code sollte funktionieren verwenden. Entferne 'self' aus diesem Code:' str + = label + "\ t \ (self. (Wert)) \ n" '. –

Antwort

0

Wenn Sie die Klasse aktualisieren zu NSObject anzupassen, können Sie die valueForKey: Methode

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 
} 
Verwandte Themen