Swift 3.0 运行时获取类属性

  • 在OC中,没有绝对的私有,用运行时可以取出。

  • 在Swift中,有绝对的私有,用private修饰的,是无法取出的。

  • 下面是swift运行时获取对象属性列表的示例:

    import UIKit

  class Student: NSObject {
    var name: String?
    var age: Int = 0
    var no: String?
    
    class func propertyList() {
        var count: UInt32 = 0
        let prolist = class_copyPropertyList(self, &count)
        for i in 0..<Int(count) {
            let pro = prolist?[i]
            // 获取 `属性` 的名称C语言字符串
            let proString = property_getName(pro!)
            // 转化成 String的字符串
            let proName = String(utf8String: proString!)
            print(proName!)
        }
        // 释放 C 语言的对象
        free(prolist)
    }
}
  • 在控制器中调用如下:
      print(Student.propertyList())
  • 输出结果如下:
    name
    age
    no
    ()
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容