swift--runtim获取变量信息
2015-08-02 YuLongLi
首先我们创建一个class,添加如下成员变量
var list = Array<AnyObject>()
var name:String?
var i32 :UInt32?
var number :NSNumber?
var dict = Dictionary<String,AnyObject>()
我们分别通过Property和ivar来获取这些成员变量信息
-
property获取
var count:UInt32 = 0
var properList = class_copyPropertyList(self.classForCoder, &count)
for index in0 ... count-1 {
var item = properList[ Int(index)]
//获取变量名称
var proper_name = property_getName(item)
var properName = String.fromCString(proper_name)!
println("变量名称:" + properName )
//获取属性
var proper_attri = property_getAttributes(item)
var properAttri = String.fromCString(proper_attri)!
println( "变量属性:" + properAttri )
//获取属性value
var proper_attri_value = property_copyAttributeValue(item, proper_attri)
var properAttriValue:String? = String.fromCString(proper_attri_value)
println( "变量属性值:\(properAttriValue)" )
}
2.通过ivar获取
var count:UInt32 = 0
var ivar = class_copyIvarList(self.classForCoder, &count)
for index in0 ... count-1 {
var ivarName = ivar_getName( ivar[ Int(index) ] )
var ivarType = ivar_getTypeEncoding( ivar[ Int(index)])
var nEncodingType = String.fromCString(ivarType)!
var nName = String.fromCString(ivarName)!
println(" \(nName) \(nEncodingType) \(index)")
}
我们来看一下效果:
我们看到:通过property获取的少了UInt32的变量
然后我们把list设为private的再看一下效果:
我们看到property获取的结果中list木有了
微信扫一扫
关注该公众号
- Java--Reflect(反射)专题4——获取成员变量以及构造函数信息
- Swift-如何获取键盘的高度,获取通知中的信息
- linux shell 特殊变量----轻松获取系统信息
- Java反射(四)-Java获取成员变量与构造函数信息
- C#获取当前应用程序所在路径及环境变量等信息
- Weex入门教程之4,获取当前全局环境变量和配置信息(屏幕高度、宽度等)
- swift之获取APP各种参数和device参数、获取APPstore信息、以及跳转到appstore
- Visual C++ 调试技巧: 从变量查看窗口获取更多信息
- Swift - 获取应用名称、应用版本、设备型号、系统版本等信息
- Java反射打印类的信息,包括类的成员函数、成员变量(只获取成员函数)
- Swift 使用CoreLocation获取定位与位置信息
- 22、Java入门—反射之获取获取成员变量和构造函数的信息
- Java 通过反射获取类的信息(成员变量,成员方法,构造方法)
- Java使用反射来获取成员变量泛型信息
- Swift动态获取成员变量及对象关联
- iOS开发-Swift获取手机设备信息(UIDevice)
- Java反射之——Java获取类中成员变量和构造函数的信息
- tensorflow获取变量维度信息
- Swift基础语法: 27 - Swift的全局变量和局部变量, 类型属性, 获取和设置类型属性的值
- mysql 存储过程中 limit之后使用分页变量,传入分页参数. 类似于微博游标分批次获取信息;问号参数类似于c#的string.format;问号占位符