确定Swift数组类型

时间:2016-05-10 12:38:34

标签: swift

我正在尝试使用Swift确定集合的类型。这是我的目标。它似乎没有被新语言支持,所以我试图回到Objective-C。集合泛型是一个新功能,我相信只是为Swift互操作性添加的。

是否有人知道某个功能可以让我检查d的数组类型?

class SuperClass : NSObject { }

class SubClass: SuperClass { }

let a = SubClass()

if a.isKindOfClass(SuperClass) {
// this works as expected like objective-c
    print("yes") 
}

let b = Array<SubClass>()
if b.isKindOfClass(Array<SuperClass>)  { 
// error: value type of 'Array<SubClass>' has no member isKindOfClass
    print("yes")
}

if b is Array<SuperClass> {
// error: 'SuperClass' is not a subtype of 'SubClass'
    print("yes")
}

3 个答案:

答案 0 :(得分:0)

您可以使用Array<String>() is Array<String>进行测试,但如果您想知道哪种类型有变量,可以查看d.dynamicType

@crashmstr是对的

答案 1 :(得分:0)

在您的情况下,b是一个数组文字(值类型),而不是引用类型。所以它无法调用isKindOfClass

答案 2 :(得分:0)

试试这个

if let array = b as? Array<SuperClass>
{
    //perform some action
}