【问题标题】:How to get class properties label in swift 3? [duplicate]如何在 swift 3 中获取类属性标签? [复制]
【发布时间】:2016-11-09 12:20:47
【问题描述】:

我想在运行时获取类属性标签。例如, 我有这门课:

 class BasicD {
     public var id_: Int64 = 0
     public var a: Int32 = 0
     public var c: NSData?
     public var d: NSData?
   }

我需要输出为:[id_,a,c,d]

我想要 java 中的反射之类的东西。我知道镜像确实喜欢反射,但是为了在镜像中获取类属性,我应该先初始化类,但我不想这样做。

【问题讨论】:

标签: ios swift


【解决方案1】:

你可以在swift3中使用Mirror来获取这样一个类的所有属性

class BasicD{
    public var id_: Int64 = 0
    public var a: Int32 = 0
    public var c: NSData?
    public var d: NSData?
}

let obj = BasicD()
var arrayOfObjects: [String] = []
let mirror =  Mirror(reflecting: obj)
for child in mirror.children {
    guard let key = child.label else { continue }
    arrayOfObjects.append(key)
    print(key)
}
print(arrayOfObjects)

这里arrayOfObjects 包含你所有的类BasicD 的变量名

【讨论】:

  • Mirror(reflecting: obj).children.flatMap{$0.label} 更快捷...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-04-04
  • 2016-07-11
  • 2023-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多