zoukankan      html  css  js  c++  java
  • Swift Swift中的反射

    Swift的反射机制是基于一个叫 Mirror 的 struct 来实现的,其内部有如下属性和方法:

    let children: Children   //对象的子节点。
    displayStyle: Mirror.DisplayStyle?   //对象的展示风格
    let subjectType: Any.Type   //对象的类型
    func superclassMirror() -> Mirror?   //对象父类的 mirror
    

     使用样例:

    样例1:输出实体对象的类名,属性个数,以及所有属性的属性名和属性值。
    首先定义一个用户类:
    //用户类
    class User {
        var name:String = ""  //姓名
        var nickname:String?  //昵称
        var age:Int?   //年龄
        var emails:[String]?  //邮件地址
    }
    

    接着创建一个用户对象,并通过反射获取这个对象的信息:

    //创建一个User实例对象
    let user1 = User()
    user1.name = "hangge"
    user1.age = 100
    user1.emails = ["hangge@hangge.com","system@hangge.com"]
             
    //将user对象进行反射
    let hMirror = Mirror(reflecting: user1)
             
    print("对象类型:(hMirror.subjectType)")
    print("对象子元素个数:(hMirror.children.count)")
             
    print("--- 对象子元素的属性名和属性值分别如下 ---")
    for case let (label?, value) in hMirror.children {
        print("属性:(label)     值:(value)")
    }
    
    控制台输出信息如下:  
    原文:Swift - 反射(Reflection)的介绍与使用样例(附KVC介绍)
     
    原文:http://www.hangge.com/blog/cache/detail_976.html
     
    相关链接:http://www.tuicool.com/articles/y6RrEbN(这文章不错)
  • 相关阅读:
    MySQL-存储过程
    MySQL-触发器
    MySQL自学笔记
    arrayList和LinkedList区别
    RecyclerView和ListView比较
    【二叉树遍历】必知方式
    进程与线程的区别
    【单例模式】java实现
    【斐波那契数列】java探究
    replugin插件化,插件转场动画失效的问题解决
  • 原文地址:https://www.cnblogs.com/rayshen/p/5045133.html
Copyright © 2011-2022 走看看