iOS-Developer-Swift

关于在swift4.0中遇到的坑:class_copyPrope

2019-02-18  本文已影响2人  它是一只肥猫

在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
}
上一篇下一篇

猜你喜欢

热点阅读