Swift - 如何让UIView,UILabel和UIImageView之间类型互相转化

和上一篇博文一样,这个问题同样出在自定义tabbar里面,上一篇中判断是不是某类型拿到了UIView上放着的UIImageView和UILabel,要想对后者作修改肯定要变换类型,按照Object的尿性,网上各种变换,不一一列出,都没用,后来博主就在那里根据自己知道的知识来尝试,结果成了,看代码:

原Object-C代码:

UIImageView * imageView=(UIImageView *)[view.subviews objectAtIndex:0];
UILabel * label=(UILabel *)[view.subviews objectAtIndex:1];

这样的用法想必大家都不陌生,但是在Swift中怎么用呢,不要急,看下面:

let imageView = view.subviews[0] as! UIImageView
let label = view.subviews[1] as! UILabel

下面对于as?和as!来进行解释:

    首先它们都是用来转换类型的
    其次,as?提供了一种类似于容错的机制,如果可以转换成功就转换成后面对应的类型,否则为nilas!的‘!’在前面我们知道有强制解析的意思,在这里也是强制转换,在运行中可能会出现错误而系统崩溃的情况,不过我们一般用都是可以确定类型的,如果崩溃,记得检查类型。
    还有就是Swift中对类型的匹配非常严格,一定要谨慎使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CodingFire

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值