//
// Person.swift
// 010-运行时加载属性列表
//
// Created by 庄壮勇 on 2018/1/9.
// Copyright © 2018年 Personal. All rights reserved.
//
import UIKit
@objcMembers class Person: NSObject {
var name: String ?
// 基本数据类型,在OC中没有可选,如果定义成可选,运行时同样获取不到,使用 KVC 就会崩溃
// var age: Int?
var age: Int = 0
// private 的属性,使用运行时,同样获取不到属性(可以获取到ivar),同样会让KVC崩溃
private var title: String ?
// 目标: [使用运行时]获取当前类所有属性的数组,可选项
/// 运行时是加钱项,不需要会写,但是一定要会说!
/// 获取 ivar 列表是所有第三方框架字典转模型的基础!
class func propertyList() ->[ String ]{
var count: UInt32 = 0
// 1.获取'类'的属性列表
let list = class_copyPropertyList ( self , &count)
for i in 0 ..< Int (count) {
// 3. 根据下标获取属性
let pty = list?[i]
// 获取 '属性' 的名称
let cName = property_getName (pty!)
// 5. 转化成String的字符串
let name = String (utf8String: cName)
print (name)
}
// 释放 C 语言的对象
free (list)
print ( "属性的数量 \ ( count )" )
return []
}
// Person.swift
// 010-运行时加载属性列表
//
// Created by 庄壮勇 on 2018/1/9.
// Copyright © 2018年 Personal. All rights reserved.
//
import UIKit
@objcMembers class Person: NSObject {
var name: String ?
// 基本数据类型,在OC中没有可选,如果定义成可选,运行时同样获取不到,使用 KVC 就会崩溃
// var age: Int?
var age: Int = 0
// private 的属性,使用运行时,同样获取不到属性(可以获取到ivar),同样会让KVC崩溃
private var title: String ?
// 目标: [使用运行时]获取当前类所有属性的数组,可选项
/// 运行时是加钱项,不需要会写,但是一定要会说!
/// 获取 ivar 列表是所有第三方框架字典转模型的基础!
class func propertyList() ->[ String ]{
var count: UInt32 = 0
// 1.获取'类'的属性列表
let list = class_copyPropertyList ( self , &count)
for i in 0 ..< Int (count) {
// 3. 根据下标获取属性
let pty = list?[i]
// 获取 '属性' 的名称
let cName = property_getName (pty!)
// 5. 转化成String的字符串
let name = String (utf8String: cName)
print (name)
}
// 释放 C 语言的对象
free (list)
print ( "属性的数量 \ ( count )" )
return []
}
}