func getAllPropertyName(_ aClass : AnyClass) -> [String] {
var count = UInt32()
let properties = class_copyPropertyList(aClass, &count)
var propertyNames = [String]()
let intCount = Int(count)
for i in 0 ..< intCount {
let property : objc_property_t = properties![i]!
guard let propertyName = NSString(utf8String: property_getName(property)) as? String else {
debugPrint("Couldn't unwrap property name for \(property)")
break
}
propertyNames.append(propertyName)
}
free(properties)
return propertyNames
Run Code Online (Sandbox Code Playgroud)
这段代码一直工作到 Swift 3.2。但是我使用的是 Swift 4,它给了我一个空的 Array[String]。
swift ×1