苹果在XCode 7 beta 5中更改了Swift反射。全局反射()函数消失了,你必须这样做:
let mirror = Mirror(reflecting: object)它以一种更好的方式提供了或多或少相同的信息(对于属性名和值,不再使用.1或.2 )。但是我找不到一种方法来探索镜像的项是否是一个类的实例。对于较旧的实现,您可以检查以下内容:
reflectedProperty.1.objectIdentifier != nil || reflectedProperty.1.count > 0但objectIdentifier似乎消失了,无论类型如何,计数始终为2。
对谁有帮助吗?
发布于 2015-08-20 04:46:47
好了,我找到了一个变通方法。我对mirror.children.enumerate()进行了迭代,它似乎创建了String类型的所有属性。相反,我深入研究了苹果的初步文档,并读到它可能是一个好主意,以“升级”儿童到例如AnyRandomAccessCollection。这使得可以依赖对象子级的计数来确定它是否是一个对象(在测试它是否是一个数组之后)
如果你对代码感兴趣的话,我现在有一个有效的Swift class to JSON序列化程序在这里工作:https://gist.github.com/peheje/cc3618253d4f38ea4885
发布于 2016-03-08 07:06:09
我不确定你是否在寻找这个,但是下面的输出是"Class“
mirror.displayStylehttps://stackoverflow.com/questions/32101336
复制相似问题