我正忙于编写一个递归方法。没有显式的“子项”,只有集合,因此我想检查是否可以迭代某些属性。
我见过人们找到Swift.Array<String>
,但这只会增加我需要测试的类型的数量。
我应该尝试投射然后计数吗?
class ChildArray : NSArray {
}
最佳答案
您可以利用Swift和Objective-C之间的免费桥接功能。 ObjC中的对象具有isKindOfClass
方法来标识它们是否来自类:
class ChildArray : NSArray {
}
func isCollectionType(value : AnyObject) -> Bool {
let object = value as! NSObject
return object.isKindOfClass(NSArray)
}
var arrayOfInt = [1, 2, 3]
var myArray = ChildArray()
var anInt = 42
println(isCollectionType(arrayOfInt)) // true
println(isCollectionType(myArray)) // true
println(isCollectionType(anInt)) // false
关于ios - 快速测试类型是否为集合,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30817719/