Swift 獲取對象的所有屬性

在閱讀HandyJSON框架的時(shí)候,想到swift是如何獲取所有屬性的。Objective-C里面都知道,可以通過runtime的class_copyPropertyList來反射賦值。但是純swift類是和NSObject不同的。簡單搜索了一圈,多數(shù)人還是在說OC里的運(yùn)行時(shí)。

蘋果提供了一個(gè)方法,可以直接反射獲取屬性名稱和類型,但是不能像runtime那樣可以直接操作賦值,直接上HandyJSON作者的一個(gè)原話吧

Mirror(reflecting: Animal()).children.forEach { (child) in
    print(child.label ?? "") // 獲取字段名
    print(type(of: child.value)) // 獲取字段類型
}

例:

class User {
    var age: Int? 
    var name: String? 
    var height: Float
}

輸出:
age
Optional<Int>
name
Optional<String>
height
Float
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • JSON是移動(dòng)端開發(fā)常用的應(yīng)用層數(shù)據(jù)交換協(xié)議。最常見的場景便是,客戶端向服務(wù)端發(fā)起網(wǎng)絡(luò)請求,服務(wù)端返回JSON文本...
    水落斜陽閱讀 3,656評論 0 15
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對...
    cosWriter閱讀 11,626評論 1 32
  • 在上一篇文章中, 我著重介紹了 Swift中指針的使用, 這篇文章主要圍繞以下幾點(diǎn): HandyJSON 的優(yōu)勢....
    Lin__Chuan閱讀 4,557評論 0 12
  • 習(xí)慣為什么重要?它是投入少產(chǎn)出高的一種手段,討論:養(yǎng)成每天早上5點(diǎn)起床能給我再來什么好處?好處是能帶動(dòng)我早睡,第二...
    星宇心愿閱讀 238評論 1 0
  • 在去年的時(shí)候,華為發(fā)布旗下的千元機(jī)全面屏手機(jī),我們可以簡單的了解一下,在性能方面采用的是驍龍430處理器,這款處理...
    tmxrpobijr閱讀 1,393評論 0 1

友情鏈接更多精彩內(nèi)容