关于在swift4.0中遇到的坑:class_copyPropertyList获取不到属性列表

在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
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 1,856评论 0 9
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,170评论 1 32
  • runtime的所有知识基本都围绕两个中心(1)类的各个方面的动态配置(2)消息传递 要动态配置类就需要知道类的本...
    东丶小菜鸟阅读 967评论 1 3
  • 今天,妈妈去超市买来了一袋美味的牛肉干,我可高兴了呢! 我还没等妈妈允许就迫不及待的打开了袋子,把牛肉干倒了出来,...
    璀璨贝壳阅读 672评论 0 2
  • 沉沉晓夜浪波寒,霾罩神州泪倚阑。 曲士不言天亦妒,汗青千古照囚男。 (平起首句入韵)
    蔚海山庄三六子阅读 134评论 0 4