2016-05-15 9 views
1
class AllDevice: Reflectable{ 

    static let LIGHT_ONOFF_NH_3A_R11_01_L12 = "LIGHT_ONOFF_NH_3A_R11_01_L12" 

    static let PLUG_ONOFF_NH_3A_R11_01_B2AC = "PLUG_ONOFF_NH_3A_R11_01_B2AC" 
    static let PLUG_POWER_NH_3A_R11_01_B2AC="PLUG_POWER_NH_3A_R11_01_B2AC" 
    static let PLUG_ENERGY_NH_3A_R11_01_B2AC="PLUG_ENERGY_NH_3A_R11_01_B2AC" 

    static let PLUG_ONOFF_NH_3A_R11_02_B2B8="PLUG_ONOFF_NH_3A_R11_02_B2B8" 
    static let PLUG_POWER_NH_3A_R11_02_B2B8="PLUG_POWER_NH_3A_R11_02_B2B8" 
    static let PLUG_ENERGY_NH_3A_R11_02_B2B8="PLUG_ENERGY_NH_3A_R11_02_B2B8" 

    static let PLUG_ONOFF_NH_3A_R11_03_B2D2="PLUG_ONOFF_NH_3A_R11_03_B2D2" 
    static let PLUG_POWER_NH_3A_R11_03_B2D2="PLUG_POWER_NH_3A_R11_03_B2D2" 
    static let PLUG_ENERGY_NH_3A_R11_03_B2D2="PLUG_ENERGY_NH_3A_R11_03_B2D2" 

}Wie erhalten Sie alle statischen Eigenschaften in Swift?

Wie alle statischen Eigenschaften in Swift bekommen?

Ich habe unten Artikel versucht, funktioniert aber nicht How to list all Variables of a class in swift

+1

Ihre Frage ist unklar, was versuchen Sie zu erreichen? Sie möchten jede Variable ausgeben, ist das richtig? Bearbeiten Sie Ihre Antwort und zeigen Sie, wie eine Beispielausgabe aussehen sollte. – Anokrize

Antwort

0

Eine Möglichkeit ist CustomReflectable zu implementieren:

class AllDevice: CustomReflectable { 

    static let LIGHT_ONOFF_NH_3A_R11_01_L12 = "LIGHT_ONOFF_NH_3A_R11_01_L12" 

    static let PLUG_ONOFF_NH_3A_R11_01_B2AC = "PLUG_ONOFF_NH_3A_R11_01_B2AC" 
    static let PLUG_POWER_NH_3A_R11_01_B2AC="PLUG_POWER_NH_3A_R11_01_B2AC" 
    static let PLUG_ENERGY_NH_3A_R11_01_B2AC="PLUG_ENERGY_NH_3A_R11_01_B2AC" 

    static let PLUG_ONOFF_NH_3A_R11_02_B2B8="PLUG_ONOFF_NH_3A_R11_02_B2B8" 
    static let PLUG_POWER_NH_3A_R11_02_B2B8="PLUG_POWER_NH_3A_R11_02_B2B8" 
    static let PLUG_ENERGY_NH_3A_R11_02_B2B8="PLUG_ENERGY_NH_3A_R11_02_B2B8" 

    static let PLUG_ONOFF_NH_3A_R11_03_B2D2="PLUG_ONOFF_NH_3A_R11_03_B2D2" 
    static let PLUG_POWER_NH_3A_R11_03_B2D2="PLUG_POWER_NH_3A_R11_03_B2D2" 
    static let PLUG_ENERGY_NH_3A_R11_03_B2D2="PLUG_ENERGY_NH_3A_R11_03_B2D2" 

    func customMirror() -> Mirror { 
     return Mirror(self, children: [ 
      "LIGHT_ONOFF_NH_3A_R11_01_L12": self.dynamicType.LIGHT_ONOFF_NH_3A_R11_01_L12, 
      "PLUG_ONOFF_NH_3A_R11_01_B2AC": self.dynamicType.PLUG_ONOFF_NH_3A_R11_01_B2AC, 
      "PLUG_POWER_NH_3A_R11_01_B2AC": self.dynamicType.PLUG_POWER_NH_3A_R11_01_B2AC 
      // etc... 
     ]) 
    } 
} 

let device = AllDevice() 
let m = Mirror(reflecting: device) 
// you can access m.children now 

Wie Sie sehen können, ist es nicht Spaß macht und eine Menge von String beinhalten wörtliche . Wenn Sie den Wert für jeden Gerätetyp ändern, müssen Sie den Spiegel entsprechend aktualisieren.


Es ist Ihre Gerätetyp Konstanten als enum zu implementieren:

enum Device: String { 
    case LIGHT_ONOFF_NH_3A_R11_01_L12 = "LIGHT_ONOFF_NH_3A_R11_01_L12" 
    case PLUG_ONOFF_NH_3A_R11_01_B2AC = "PLUG_ONOFF_NH_3A_R11_01_B2AC" 
    case PLUG_POWER_NH_3A_R11_01_B2AC = "PLUG_POWER_NH_3A_R11_01_B2AC" 
    // etc.. 

    static let allDevices: [Device] = [ 
     .LIGHT_ONOFF_NH_3A_R11_01_L12, 
     .PLUG_ONOFF_NH_3A_R11_01_B2AC, 
     .PLUG_POWER_NH_3A_R11_01_B2AC 
     // etc... 
    ] 
} 

Auf diese Weise die complier Sie Überprüfung einige Fehler bieten.

Verwandte Themen