Access properties via subscripting in Swift

后端 未结 6 1619
情歌与酒
情歌与酒 2021-01-04 00:43

I have a custom class in Swift and I\'d like to use subscripting to access its properties, is this possible?

What I want is something like this:

clas         


        
6条回答
  •  既然无缘
    2021-01-04 01:04

    Adding some syntax sugar to Benzi's answer:

    protocol PropertyReflectable { }
    
    extension PropertyReflectable {
        subscript(key: String) -> Any? {
            let m = Mirror(reflecting: self)
            return m.children.first { $0.label == key }?.value
        }
    }
    
    struct Person {
        let name: String
        let age: Int
    }
    
    extension Person : PropertyReflectable {}
    

    Then create a Person and access it's keyed properties.

    let p = Person(name: "John Doe", age: 18)
    
    p["name"] // gives "John Doe"
    p["age"] // gives 18
    

提交回复
热议问题