快速反射在特定类型的实例上工作得很好,但是如果我想打印出特定类的所有实例变量该怎么办?
创建Mirror
适用于实例:
Mirror(reflecting: self).children.filter { $0.label != nil }.map { return $0.label! }
但当self是Bird
或Fruit
之类的类时,返回的列表为空
我有一个类似的问题,我自己的自定义类在我创建它们的镜像时没有返回子类。按照这个答案的建议,尝试使用superclassMirror()
。它解决了我的问题。
let myMirror = Mirror(reflecting: self).superclassMirror()
myMirror.children.filter { $0.label != nil }.map { return $0.label! }