gpt4 book ai didi

swift - 我可以将元组与 AnyObject 一起使用吗?

转载 作者:行者123 更新时间:2023-11-30 14:07:44 25 4
gpt4 key购买 nike

我想知道我是否可以做这样的事情:

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)

显然这不起作用,因为 Tuple 不是一类,或者至少不是我可以转换的类。有没有办法让它发挥作用,如果有的话怎么办?如果不是,确定 AnyObject 类型的最佳方法是什么?我尝试过:

if parameter is Bool {
//some code
}
else if parameter is Int {
//some code
}

但它似乎不起作用,我想是因为 Bool 只是一个类型别名的 Int 或者什么?总结一下,我可以在这里使用元组吗?如果不能,我该怎么办?为了添加一些上下文,我正在编写一个用于多个不同目标的类,因此我无法确定该值是什么,只是它是 Int 或 Bool。

最佳答案

这里不能使用元组,因为它们是复合类型,因此没有类。

if 的问题在于,为了兼容性,BoolInt 被转换为具有boolValueintegerValue 属性,如果您强制转换它们,则会调用它们。因此 0 和 1 相当于 truefalse,因此是不明确的。

作为解决方案,我建议创建一个将两个值都保存为 Optionals 的类:

class Holder {
let boolValue: Bool?
let intValue: Int?
}

关于swift - 我可以将元组与 AnyObject 一起使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32149886/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com