最新消息:20210816 当前crifan.com域名已被污染,为防止失联,请关注(页面右下角的)公众号

[整理]Swift中的类型转换type casting中is和as的含义

Swift crifan 2755浏览 0评论
[背景]
折腾了:
[已解决]Swift代码出错:Cannot convert value of type UIView? to specified type UIButton
后,需要去搞懂is和as,尤其是as!的含义。
[解决过程]
1.搜:
swift as downcast
参考:
[总结]
类型转换是一种检查实例类型的方式,
也是将一个实例看成,好像是一个不同的,处于类的继承关系树中的某个层次的,父类或子类
Swift中的类型转换是用is和as操作符来实现的:
is:判断某个实例是否是某种类型
as:将某个实例转换为另外某个类型(不是完全无关的类型,而是该类的某个父类或子类)
-》也可以通过 类型转换 来判断 一个类型type 是否遵循某个协议protocol
如果你确定某个实例是某个类的话,那么可以去用类型转换
由于向下转换可能会转换失败,所以类型转换操作符有两种形式:
  • as?:返回一个类型的optional类型的变量
    • 如果你不太确定你的向下转换是否成功,则用这个as?
  • as!:返回,尝试强制转换,然后强制解包unwrap,后的结果
此处的示例代码中的:
if let movie = item as? Movie {
实际上内部处理过程是:
 item as? Movie
是个整体:
内部处理过程是:
返回的是Movie?类型==Optional<Movie>
然后是:
movie = Movie?
再然后是:
let movie?
这就和之前普通的Optional的变量是一样的了。
上面这句话,可以解读为:
把item看成是,转换为Movie;
如果转换成功,则把从OptionalMovie类型的变量所返回的值,,保存到一个,,新建的名为movie的临时变量中
注:
casting,类型转换,实际上并没有修改变量,改变改变的值,
底层的实例对象,还是和之前一样,没有变。
只是简单的,把对应变量视为,去按照对应转换为的类型去访问该变量。

转载请注明:在路上 » [整理]Swift中的类型转换type casting中is和as的含义

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
84 queries in 0.170 seconds, using 22.03MB memory