加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-14 07:13:16 所属栏目:百科 来源:网络整理
导读:可选类型: 代表着可以有也可以没有 OC中的Optional 等于 Swift中 ? 以后一旦看到一个方法或者数据类型后面有?,就代表返回的是一个可选类型 // example: let name: String ? = "DaiSuke" var url: String ? = "www.baidu.com" // 都表示这两个变量的值可有可

可选类型: 代表着可以有也可以没有 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)")

?? 的作用正如代码写的那样,如果前者缺失值,就会用后者代替

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读