可选类型Optional

可选类型Optional

  • 可选类型 (Optional) 只要看到我们的数据类型后面有 ? !

    • 含义:可以有值也可以没有值,只有可选类型的变量才能赋值nil
    • convenience init? 返回一个可选类型的值
    • 注意:在输出一个可选类型的值,会包装一个Optional
    • 如果在变量后面加上一个 ! ,就是告知系统改变量一定有值
    • ! 称之为强制解包
    • 注意:如果可选类型的变量没有值,而又进行强制解包,则会引发一个运行时的错误
    • 开发技巧:作为初学者,不要去纠结 ? ! ?? 这些符号,初期利用Xcode开发工具的提醒功能来解决问题,后期深入研究这些符号什么时候使用 ? 什么时候使用我们的 !
  • 事例代码

let url = NSURL(string: "http://www.itcast.cn")
print(url!)

// URL 含有中文会创建不成功
let url2 = NSURL(string: "http://www.itcast.cn/传智")
//print(url2!)

if url != nil{
    print(url)
}

可选绑定

  • 格式:if let 变量名称 = 可选类型变量 { }

  • 优点:只要能进入大括号,哪可选类型的变量就一定有值

if let url3 = url {
    //if中不用对url3进行强制解包,在赋值的过程中系统已经进行解包了
    print(url3)
}

自动解包

  • 如果数据类型后面写的是 ! ,那么在使用该变量时,系统会自动解包
let url4: NSURL! = NSURL(string: "http://www.itcast.cn")
print(url4)

//数据类型后面不要随意添加 ! 如果没有值会报错
let url5: NSURL! = NSURL(string: "http://www.itcast.cn/传智")
//print(url5)

总结

  • 1.只要看到数据类型后面有 ?! 就代表着是可选类型(Optional
  • 2.数据类后面是 ? 和是 ! 的区别,是 ? 需要我们自己解包,是 ! 系统会帮我们解包
  • 3.强制解包,(无论是自己强制解包或系统帮我们强制解包)变量没有值就会报错
  • 4.先判断后解包,推荐使用可选绑定进行解包
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值