使用运行时获取属性列表

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..<Int(count) {
            // 3.根据下标取属性
            let pty = list?[i]
            // 4.获取属性的名称 的 C语言字符串
            // Int8 -> 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
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容