我的数组包含不同类型的Any
,即Array<Any>
。现在,我发送这个数组并迭代它。此数组中从NSObject
下降的所有元素都必须被包装。
但是,如果元素来自NSObject
我在这里看到了这个答案How to tell if a Class inherits from NSObject (Objective-C) - 但是,我担心,它会导致纯Swift对象的运行时错误。
我也尝试了isKindOfClass
,但在所有情况下,似乎都会返回true
,对于所有类型的元素,例如Int
,{{1} },Dictionary
等
下面是数组及其类型的外观。 HelloTest继承自NSObject
PS
我要在Objective-C
我已将此数组从Mirror
代码遍历到Swift
代码,因此,我可以在此数组中拥有所有类型的Swift对象。
答案 0 :(得分:2)
您可以在Swift中使用可选绑定
for obj in array {
if let obj = obj as NSObject {
//Do something
}
}
修改强>
对于Objective-C中的Arrays / NSArray,基本上所有对象都从NSObject继承或符合NSObject协议,因此isKindOfClass:NSObject
基本上都是真的。
答案 1 :(得分:-1)
数组可能只包含对象。你不会在数组中找到一个解包的东西,所有包装类型(NSNumber
,NSValue
等),如几乎所有其他都来自{{ 1}}。
所以,为了告诉你有什么,你需要一个更具体的问题,比如你期望找到的包装器的分离,或者自定义对象的分离(例如镜像)