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

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

Swift3.0 反射

2019-11-09 15:35:13
字體:
來源:轉載
供稿:網友

       反射的作用包括 

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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 彝良县| 屏东市| 鹤山市| 兴化市| 札达县| 柘城县| 交城县| 舞阳县| 博野县| 恩施市| 邻水| 武隆县| 凤冈县| 鄂托克旗| 怀远县| 长寿区| 铁岭县| 朝阳市| 南溪县| 东平县| 库车县| 南安市| 太白县| 怀来县| 通州区| 高邮市| 广安市| 腾冲县| 和顺县| 马鞍山市| 无棣县| 增城市| 南岸区| 疏勒县| 松滋市| 阜城县| 白银市| 永兴县| 曲麻莱县| 宁河县| 石嘴山市|