【问题标题】:Reflection Swift 2.0 XCode 7 beta 5反射 Swift 2.0 XCode 7 beta 5
【发布时间】:2015-08-19 16:51:18
【问题描述】:

Apple 在 XCode 7 beta 5 中更改了 Swift 反射。全局 reflect() 函数消失了,你必须这样做:

let mirror = Mirror(reflecting: object)

它以更好的方式提供或多或少相同的信息(属性名和值不再使用 .1 og .2)。但是我找不到一种方法来探索镜像项是否是类的实例。 您可以检查以下较旧的实现:

reflectedProperty.1.objectIdentifier != nil || reflectedProperty.1.count > 0

但 objectIdentifier 似乎消失了,无论类型如何,计数始终为 2。

帮助任何人?

【问题讨论】:

    标签: swift2 xcode7-beta5


    【解决方案1】:

    好的,所以我找到了解决方法。我正在迭代mirror.children.enumerate(),它似乎使所有类型的属性都为String。相反,我深入研究了 Apple 的初步文档,并读到将孩子“升级”到例如AnyRandomAccessCollection。这使得可以依靠对象子项的计数来确定它是否是一个对象(在测试它是否是一个数组之后)

    如果您对代码感兴趣,目前我有一个功能强大的 Swift 类到 JSON 序列化器,在这里工作在这个要点上: https://gist.github.com/peheje/cc3618253d4f38ea4885

    【讨论】:

      【解决方案2】:

      我不确定你是否在寻找这个,但以下的输出是“Class”

      mirror.displayStyle
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-08-27
        • 1970-01-01
        • 2015-11-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-29
        相关资源
        最近更新 更多