我想知道我是否可以这样做:
override func someCocoaFunc(someParameter:AnyObject?) {
if let parameter = someParameter as! Tuple {
let parameterType = parameter.1
if parameterType == "Heads up, this is an Int" {
print(parameter.0 + 1) //prints 2
}
else {
//fallback
}
}
}
let myTuple = (1,"Heads up, this is an Int")
someCocoaFunc(myTuple)
显然这不起作用,因为元组不是一个阶级,或者至少不是我可以投的任何一个阶级。有没有办法让这个工作,如果是这样的话?如果不是,确定AnyObject
类型的最佳方法是什么?我试过了:
if parameter is Bool {
//some code
}
else if parameter is Int {
//some code
}
但它似乎没有用,我认为因为Bool只是一个类型&Int Int?总而言之,我可以在这里使用元组,如果没有,我该怎么办?为了添加一些上下文,我写了一个用于serval不同目标的类,所以我无法确定该值是什么,只是它是Int或Bool。
答案 0 :(得分:0)
你不能在这里使用元组,因为它们是复合类型,因此没有类。
if
的问题在于兼容性Bool
和Int
转换为具有NSNumber
和boolValue
属性的integerValue
如果你施放它们会被调用。因此0和1相当于true
和false
,因此不明确。
作为解决方案,我建议创建一个将两个值都保存为Optionals
的类:
class Holder {
let boolValue: Bool?
let intValue: Int?
}