您可以通过使用class_copyIvarList
(因为我知道斯威夫特不支持可选的增值经销商),环比他们得到的类实例的所有变量和得到的名字。
var aClass : AnyClass? = self.dynamicType
var propertiesCount : CUnsignedInt = 0
let propertiesInAClass : UnsafeMutablePointer<Ivar> = class_copyIvarList(aClass, &propertiesCount)
for var i = 0; i < Int(propertiesCount); i++ {
var propName:String = NSString(CString: ivar_getName(propertiesInAClass[Int(i)]), encoding: NSUTF8StringEncoding)
}//for
游乐场
class Myclass{
var myInteger:Int = 1
var myBoolean:Bool = false
var myString:String = "heyStr"
func printValues(){
var aClass : AnyClass? = self.dynamicType
var propertiesCount : CUnsignedInt = 0
let propertiesInAClass : UnsafeMutablePointer<Ivar> = class_copyIvarList(aClass, &propertiesCount)
for var i = 0; i < Int(propertiesCount); i++ {
var propName:String = NSString(CString: ivar_getName(propertiesInAClass[Int(i)]), encoding: NSUTF8StringEncoding)
println(propName)
}//for
}
}
var mc:Myclass = Myclass()
mc.printValues()
输出:
myInteger
myBoolean
myString
[EDIT 1]
Ivar
指的是Objective-C运行:
/// An opaque type that represents an instance variable.
typealias Ivar = COpaquePointer
[编辑2]
如果你感兴趣的获取值也做两件事情:
- 继承你的cass从
NSObject
ae class Myclass:NSObject{..}
var propValue : AnyObject! = self.valueForKey(propName)
顺便说一句,如果你想将它们存储到一些解释,你需要1检查它们的类型。因为你已经propValue
定义为AnyObject
我得到未申报类型的使用“伊瓦尔在您的操场上线12 ... – P5ycH0 2014-09-04 06:21:02
@ P5ycH0看到我对伊瓦 – 2014-09-04 07:06:00
没问题编辑,代码运行在我的项目罚款。 Thnx – P5ycH0 2014-09-04 07:13:34