2

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。

帮助任何人?

4

2 回答 2

2

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

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

于 2015-08-19T20:46:46.703 回答
1

我不确定您是否正在寻找这个,但以下输出是“类”

mirror.displayStyle
于 2016-03-07T23:06:09.053 回答