展开可选类型的最佳方法[重复]
Posted
技术标签:
【中文标题】展开可选类型的最佳方法[重复]【英文标题】:Best way to unwrap optional type [duplicate] 【发布时间】:2016-07-14 04:40:54 【问题描述】:我有情况
let a: Int? = getFromSomewhere()
if a == nil
return
let b = a!
我不喜欢太多层。但我认为这并不优雅。 你有更优雅的方式吗?
【问题讨论】:
“优雅”到底是什么意思? — 如果a
不是 nil
,你为什么要返回?如果它是 nil
,你为什么要强制解开a
?你的代码没有意义。如果你运行该代码,你会崩溃。
我的错,应该是相等的。
【参考方案1】:
省略a
,省略nil检查,省略force-unwrap;一行:
guard let b = getFromSomewhere() else return
【讨论】:
【参考方案2】:您也可以使用guard
或if let
来解开选项:
所以而不是:
if a != nil
return
let b = a!
if let a = getFromSomewhere()
// Do what you want with a
else
// a is nil
并带有保护声明:
guard let a = getFromSomewhere() else
NSLog("error a is nil")
return
// You can use a now if it's not nil
【讨论】:
以上是关于展开可选类型的最佳方法[重复]的主要内容,如果未能解决你的问题,请参考以下文章
Swift 中的可选类型错误:致命错误:在展开可选值时意外发现 nil
可选类型“字符串”的值未展开;你的意思是用'!或者 '?' [复制]