使用运行时获取属性列表

class Person: NSObject {
    var name: String?
    var age: Int = 0
    // 基本数据烈性,在OC中没有可选项, 如果定义成可选, 运行时同样获取不到吗使用KVC就会崩溃!!!
    //var age: Int?
    var title: String?
   // private 属性, 使用运行时,同样获取不到属性(可以获取到 iva)同样会让KVC崩溃
    //private var title:String?
    
    
    
    // 使用运行时获取当前类所有属性的数组
    class func propertyList() -> [String] {
        var arr = [String]()
        var count:UInt32 = 0
        // 1.获取类的熟悉感列表 返回属性列表的数组, 可选项
        let list = class_copyPropertyList(self, &count)
        print("属性的数量 \(count)")
        // 2.遍历数组
        for i in 0.. Byte -> Char -> C语言的字符串
            let cName = property_getName(pty!)
            // 5.转换为 String 的字符串
            let name = String(utf8String: cName!)
            print(name ?? "")
            arr.append(name!)
        }
        // 3.释放c语言的对象
        free(list)
        return arr
    }
}

你可能感兴趣的:(使用运行时获取属性列表)