swift中“!”和“?”的区别?

https://img4.mukewang.com/5b7965f0000150b403840025.jpg

我在这里给roomid赋值不成功,改为“!”又报错!

https://img4.mukewang.com/5b7965fc0001270d06370097.jpg

这里是可以的!

这是为什么!


守着星空守着你
浏览 773回答 1
1回答

隔江千里

? 和 ! 都是对一种类型 Optional 操作的语法糖.官方解释:“ An optional value either contains a value or contains nil to indicate that a value is missing. Write a question mark (?) after the type of a value to mark the value as optional.”大概意思是一个 Optional 类型, 可能有值, 也可能等于 nil。你可以使用 ? 去询问。你也可以使用 ! 去强制解包, 但当 Optional 没有值时, 会 Crash。一般来说你也可以这样, 去更安(ma)全(fan)的解包if let value = someOptional { /* 有值, 返回 true */     print("someOptional != nil")} else {     print("someOptional == nil")}// 在 Swift 2.0 +, 可以使用 guard 关键字, 去更友好构造代码结构guard let value = someOptional else {     print("someOptional == nil")    return }print("someOptional value is \(value)")具体建议参考: Swift 可选值(Optional Values)介绍
打开App,查看更多内容
随时随地看视频慕课网APP