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
}
}
使用运行时获取属性列表
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 额外说明:1、基本数据类型,在OC中没有可选,如果定义为可选,运行时同样获取不到,使用KVC就会崩溃2、priva...