我正忙于编写一个递归方法。没有显式的“子项”,只有集合,因此我想检查是否可以迭代某些属性。

我见过人们找到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/

10-11 14:36