gpt4 book ai didi

ios - 怎么被as的垂头丧气了!为同一类型工作?

转载 作者:行者123 更新时间:2023-11-28 13:11:47 24 4
gpt4 key购买 nike

在下面的代码中,通过 as! 向下转型对于同一类型是失败的。Swift 是否不允许对同一类型进行向下转换?

class base {
var a = 1
}

class derived : base {

}

let a: base? = base()
let b = a as! base // error occur!
println("\(b.a)")

错误信息:
错误:从'base' 沮丧? 'base' 只解包选项;您是要使用“!”吗?
让 b = a 作为!根据
~^~~~~

如果我像下面这样修改上面的代码,就没有问题。

let a: base? = derived()
let b = a as! derived
println("\(b.a)")

最佳答案

这是DownCasting在swift中的定义

Downcasting

A constant or variable of a certain class type may actually refer to an instance of a subclass behind the scenes. Where you believe this is the case, you can try to downcast to the subclass type with a type cast operator (as? or as!).

因此,如果类型相同,则不是 DownCasting。

Swift document

关于ios - 怎么被as的垂头丧气了!为同一类型工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31016849/

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