Swift利用反射获取对象属性列表

作者: chensifang | 来源:发表于2016-10-02 02:09 被阅读705次

    Objective-C中获取类(类对象)的属性列表利用runtime
    Swift可以利用反射获取

    class SuperClass: NSObject {
        var name:String = "zym_chen"
        var qq: String = "625271562"
    }
    
    class SubClass: SuperClass {
        var age:Int = 1
        var sex:Bool = true
        
        class func test() {
            let obj: SubClass = SubClass()
            let morror = Mirror.init(reflecting: obj)
            let superMorror = Mirror.init(reflecting: obj).superclassMirror
    
            for (name, value) in (superMorror?.children)! {
                print("父类属性名:\(name) 值: \(value)")
            }
            for (name, value) in (morror.children) {
                print("子类属性名:\(name) 值: \(value)")
            }
        }
    }
    
    // 打印结果:
    父类属性名:Optional("name") 值: zym_chen
    父类属性名:Optional("qq") 值: 625271562
    子类属性名:Optional("age") 值: 1
    子类属性名:Optional("sex") 值: true
    

    比起用runtime要方便, 而且可以分别获取对象仅属于自身的属性值和从父类继承的属性值.不过暂时Swift中反射的功能远还没有runtime强大

    相关文章

      网友评论

        本文标题:Swift利用反射获取对象属性列表

        本文链接:https://www.haomeiwen.com/subject/pycdyttx.html