我正在尝试使用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 :(得分: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
}