zoukankan      html  css  js  c++  java
  • 反射(I)

    反射获取属性和属性值

     1 let item = DoctorGroup()
     2 guard let dic = InterfaceTests.obtainValues(subObject: item) else {
     3                             XCTFail("testFetchMyGroups is (dataIsEmpty)")
     4                             return
     5                         }
     6 
     7 
     8 for (_, value) in dic {
     9                             print("------------>(value)")
    10                         }
    11 
    12 
    13 //    获取Model的属性和值   纯Swift专用
    14     class func obtainValues<T>(subObject: T) -> [String: Any]? {
    15         var resultDic = [String: Any]()
    16         
    17         let mirror = Mirror(reflecting: subObject)
    18         for (name, value) in mirror.children {
    19             resultDic[name!] = value
    20         }
    21         
    22         var superMirror: Mirror? = mirror.superclassMirror
    23 
    24         while superMirror != nil {
    25             for (name, value) in (superMirror?.children)! {
    26                 resultDic[name!] = value
    27             }
    28             superMirror = superMirror?.superclassMirror  //获取父类的属性和值
    29         }
    30         return resultDic
    31     }
    View Code
  • 相关阅读:
    luogu 1593
    luogu 1369
    hdu 1796
    bzoj 3398
    luogu 4587
    luogu 2152
    bzoj 3629
    bzoj 1507: [NOI2003]Editor
    bzoj 1503: [NOI2004]郁闷的出纳员
    bzoj 1497: [NOI2006]最大获利
  • 原文地址:https://www.cnblogs.com/EchoHG/p/8760533.html
Copyright © 2011-2022 走看看