Swift3.0 反射
来源:互联网 发布:南风知我意gl百度云 编辑:程序博客网 时间:2024/06/06 19:26
反射的作用包括
1、 使用NSClassFromString通过类名得到实例; (类型于Java的Class.forName和newInstance)
2、不知道对象包含哪些属性,使用Mirror得到属性值; (类似于Java的getDeclaredFileds函数)
得到实例分为3步(PS:跟Java很像,大道同源):
1、 得到应用名称;
2、 得到类的完整路径, 注意分隔符是小数点;并判断数据类型是否符合预期。 备注: as?后面的格式是类名.Type, cls可能是nil。
3、 调用init函数实例化;
let nameSpace = Bundle.main.object(forInfoDictionaryKey: "CFBundleName") as! String //得到应用名称guard let cls = NSClassFromString(nameSpace + "." + clsName) as? UIViewController.Type else { return } //得到类完整路径let vc = cls?.init()
使用Mirror显示出对象的所有属性值(在JSON解析时会用到):
struct Book { let name: String? let price: Int let page: Int}let book = Book(name: nil, price: 10, page: 200)let mirror = Mirror(reflecting: book)for case let(key?, value) in mirror.children { print("key:\(key), value: \(value)") //打印成员属性}print(mirror.subjectType) //反射对象的数据类型
输出:
key:name, value: nilkey:price, value: 10key:page, value: 200Book
0 0
- Swift3.0 反射
- Swift3.0 -- 反射机制Demo&动态调用命名空间
- Swift3.0
- swift3.0
- Swift3.0
- swift3.0反射的到struct中的属性值和属性名
- swift3.0的改变
- Swift3.0学习
- Swift3.0 初识
- swift3.0 GCD
- swift3.0 gcd 变化
- swift3.0变化
- Swift3.0 - 集合 - Set
- swift3.0更新
- swift3.0 GCD
- Swift3.0 类型检查
- swift3.0 NSString
- swift3.0 关于字符串
- 带有滚动条的textview
- 机器学习(十一):K-Means算法
- iOS 直播app探索(一)
- Android音频焦点详解(上)
- 树莓派学习笔记一:ROS安装
- Swift3.0 反射
- ajax入门之建立XHR对象 (1)
- 【PAT】1051. Pop Sequence
- 蓝桥杯 波动数列(01背包方案数)
- 将比较大的镜像先上传到Ceph,再在glance中进行create
- opencv使用-HoughLinesP and HoughLines
- ZOJ - 3499 Median
- sql on hadoop方案(4)
- 用Java代码一键下载图片网站的全部图片