在swift4.0中使用class_copyPropertyList来获取类里面的属性列表,结果发现获取的列表使用为空,count始终为0。
后来通过查找资料发现是因为swift4.0中继承 NSObject 的 swift class 不再默认 BRIDGE 到 OC,如果我们想要使用的话我们就需要在class前面加上@objcMembers 这么一个关键字
@objcMembers class FunctionMyModel: NSObject {
var FUNCTION_NAME:String! = ""
var FUNCTION_FACE:String! = "
}
则能获取到属性列表。
附获取属性的方法
func getPropertiesFromClass(object:NSObject) ->([String]){
var result = [String]()
var count:UInt32 = 0
let proList = class_copyPropertyList(object_getClass(object),&count)
for i in 0..<numericCast(count) {
let property = property_getName((proList?[i])!);
let proper = String.init(cString: property)
result.append(proper)
//=print("属性成员属性:%@",String.init(utf8String: property) ?? "没有找到你要的属性");
}
return result
}
网友评论