国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Swift3.0 反射

2019-11-09 14:26:42
字體:
來源:轉載
供稿:網友

       反射的作用包括 

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


上一篇:Tango概念

下一篇:內置存儲fuse文件系統

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 互助| 红安县| 沙河市| 蓝山县| 博白县| 德阳市| 雷波县| 汽车| 霍邱县| 庄浪县| 乐业县| 邹平县| 都江堰市| 商水县| 滨州市| 衡山县| 尚义县| 乌兰县| 如皋市| 百色市| 徐州市| 樟树市| 武功县| 太康县| 沭阳县| 玉树县| 黔江区| 同江市| 太谷县| 石泉县| 晋中市| 进贤县| 彩票| 桦川县| 南城县| 宜昌市| 福建省| 内乡县| 清远市| 深泽县| 屏山县|