阅读Swift Guide的类型转换部分,我看到我使用is
关键字来键入检查变量。
func isString(test: AnyObject?) -> Bool {
return test is String
}
似乎当我尝试类似于检查包含三个NSNumber对象的元组时,我收到一个'元组不符合协议AnyObject
'。有没有办法检查变量是否包含元组?
func isTuple(test: AnyObject?) -> Bool {
return test is (NSNumber, NSNumber, NSNumber) // error
}
答案 0 :(得分:2)
你可以这样做:
func isTuple(test: Any?) -> Bool{
return test is (NSNumber, NSNumber, NSNumber)
}
答案 1 :(得分:2)
您不能在此处使用AnyObject
,因为tuple不是类类型的实例。
AnyObject
可以表示任何类类型的实例。Any
可以表示任何类型的实例,包括函数类型。
来自The Swift Programming Guide - Type Casting
相反,请尝试使用更通用的Any
类型:
func isTuple(test: Any?) -> Bool {
return test is (NSNumber, NSNumber, NSNumber)
}
isTuple("test") // false
let tuple: (NSNumber, NSNumber, NSNumber) = (Int(), Int(), Int())
isTuple(tuple) // true