Swift 通过运行时获取属性名列表

Posted on 2018-07-25 23:45  向往远方  阅读(882)  评论(0)    收藏  举报

import UIKit

 

//必须要有@objcMembers修饰符,否则获取到的成员属性为0

@objcMembers

 

class Person: NSObject {

    var name: String?

    var age: Int = 0

    var title: String?

    

    class func propertyList() -> [String] {

        var arr: [String] = []

        var count: UInt32 = 0

        let list = class_copyPropertyList(self, &count)

        print("参数的长度为\(count)")

        for i in 0..<Int(count) {

            let pty = list?[i]

            //得到C字符串

            let cName = property_getName(pty!)

            //将C字符串转化为String

            let name = String(utf8String: cName)

            arr.append(name!)

        }

        return arr

    }

    

}

博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3