首页 > 解决方案 > 这是在 Swift 中检查选项的最简洁的方法吗

问题描述

我整个早上都在尝试研究 Swift 中的选项,我知道有很多堆栈溢出帖子,但似乎没有一个能正确地澄清这一点

对于以下代码,这是验证可选项的最简洁方法吗?

let overlays:String = "overlays=" + self.preferences.string(forKey: "overlays")! == nil ? "" : self.preferences.string(forKey: "overlays")!

请注意,我似乎可以这样做

if( self.preferences.string(forKey:="overlays" != nil) {
    //do something
}

然而,在我看来,这不太简洁和可读。

编辑:事实证明,这甚至不能正确处理 nil ,因为我得到了

“线程 1:致命错误:在展开可选值时意外发现 nil”

那么您能否提供最简洁的工作方法以仅包含存在的字符串

标签: iosswift

解决方案


你所做的是强制解包。您必须使用 if let 或 guard let 进行可选处理。

if let a = self.preferences.string(forKey: "overlays"), let b = self.preferences.string(forKey: "overlays") {
    let overlays:String = "overlays=\(a)\(b)" +  
}

推荐阅读