2016-05-10 45 views
-2

我试图确定使用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") 
} 
+0

我还在学习迅速,但确实'b为阵'工作? [类型转换:检查类型](https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/TypeCasting.html) – crashmstr

+0

您已回答了您自己的问题,那么问题是什么? – matt

回答

0

你可以简单地用Array<String>() is Array<String>测试,但如果你想知道哪种类型的任何变量,你可以看一下d.dynamicType

@crashmstr是正确

0

在你的情况b是一个数组常量(值类型),而不是引用类型。所以它不能拨打isKindOfClass

0

试试这个

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