Swift-- 最让人蛋疼的就是? ! ??

本文深入探讨了Swift编程语言中可选类型的概念、语法及应用,通过实例展示了如何安全地处理可选值,避免运行时错误,并介绍了可选值的替代值处理方法。主要内容包括可选类型的定义、可选值的声明与赋值、强制解析的使用与注意事项,以及如何优雅地处理可选值缺失情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

可选类型: 代表着可以有也可以没有 OC中的Optional 等于 Swift中 ?
以后一旦看到一个方法或者数据类型后面有? , 就代表返回的是一个可选类型

// example:
let name:String? = "DaiSuke"
var url:String? = "www.baidu.com"
// 都表示这两个变量的值可有可无,有值就是一个确定的值,比如DaiSuke,没有就是nil

初学者看到? 需要淡定一点, 因为从OC转入Swift之后, 最让人蛋疼的就是? ! ??
初学者对于? ! 最好借助编译器来解决问题

// example:
let url = NSURL(string: "http://www.baidu.com/")
print(url)
// 不加!表示可选值optional,不一定要有值,可以为空
print(url!)
// 加!表示一定有值,必须有值,如果没值,为nil,你惨了报错,直接在编译器就给你砍掉

var url = NSURL(string: "http://www.baidu.com/")
url = nil
print(url)
print(url!) 
// 加!表示一定有值,必须有值,如果没值,为nil,你惨了报错,直接在编译器就给你砍掉

使用可选类型需要注意, 如果直接打印可选了类型, 那么打印出来的值会被Optional包裹
! 代表告诉编译器, 可选类型中一定有值, 强制解析
如果可选类型中没有值, 而又进行了强制解析, 那么程序就会崩溃

可选值的方法使用 ?? 操作符来提供一个默认值。如果可选值缺失的话,可以使用默认值来代 替。
??

let url3:String? = "hahaha"
let url4 = "http://www.baidu.com/"
print("\(url3 ?? url4)")

这里写图片描述

let url3:String? = nil
let url4 = "http://www.baidu.com/"
print("\(url3 ?? url4)")

这里写图片描述
?? 的作用正如代码写的那样,如果前者缺失值,就会用后者代替

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值