国产探花免费观看_亚洲丰满少妇自慰呻吟_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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 平利县| 林甸县| 揭西县| 广宁县| 安国市| 舟山市| 比如县| 葫芦岛市| 汝南县| 满洲里市| 梅州市| 科尔| 濮阳县| 甘洛县| 石阡县| 梓潼县| 张家界市| 广州市| 兴海县| 齐河县| 吴江市| 包头市| 始兴县| 马尔康县| 沁源县| 开封县| 冀州市| 申扎县| 平顺县| 益阳市| 重庆市| 涟水县| 龙口市| 贵南县| 囊谦县| 武城县| 麻城市| 大足县| 旬阳县| 抚宁县| 宣武区|