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

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强大

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,206评论 4 61
  • 你女朋友仅剩的那点智商对付你也是绰绰有余了。 文:老A 1. 你的女朋友可能高数不及格,甚至生活还不能完全自理,但...
    i老A阅读 4,606评论 0 8
  • 老时间,老地点,老相识,老味道,旧时天气旧时衣,当时年少春衫薄,如斯美好。——《向着光亮那方》 刷了刷朋友圈,老江...
    小文青年阅读 3,754评论 9 15
  • “修炼爱情的悲欢,我们这些努力不简单…” 近期,徐佳莹在《我是歌手》的节目上翻唱林俊杰这首《修炼爱情》后,歌...
    小薇子阅读 3,173评论 0 0
  • 在一个古老的森林里,存在着一个不为人知的大家庭。 在这里住着一群小动物,他们一直享受着安静闲适的日子。有天...
    我不是混世小魔王阅读 2,642评论 2 5