【问题标题】:When is Mirror.Child label nil?Mirror.Child 标签何时为零?
【发布时间】:2021-04-01 09:12:16
【问题描述】:

Mirror.Child 状态的文档,

当标签组件不是 nil 时,它可能代表一个存储属性的名称或一个活动的枚举大小写。如果将字符串传递给 descendant(::) 方法,则使用标签进行查找。

Mirror.Childlabel 的值何时为零?

【问题讨论】:

    标签: swift reflection mirror


    【解决方案1】:

    Mirror.Child 可以表示未标记的值,因此labelOptional

    如果您创建一个 Mirror 来反映具有命名属性的类型(例如 structclass),则 label 的每个属性都会有一个非零值。但是,您也可以 Mirror 带有未命名的孩子的事物,例如 Array

    当您使用MirrorArray 时,Array 的元素将可以作为Mirror.Child 访问,但它们的labels 将是nil

    func mirrorChildren<T>(of object: T) {
        for child in Mirror(reflecting: object).children {
            print("Label: \(child.label ?? "nil"), value: \(child.value)")
        }
    }
    
    mirrorChildren(of: [1,2,3])
    

    输出:

    Label: nil, value: 1
    Label: nil, value: 2
    Label: nil, value: 3
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-14
      相关资源
      最近更新 更多