尽管“let”部分为零,但我有一个正在执行的“if let”语句。
if let leftInc : Double? = self.analysis.inputs[self.btnLeftIncisor.dictionaryKey!]! {
println(leftInc)
let valueString : String = formatter.stringFromNumber(NSNumber(double: leftInc!))!
self.leftIncisorTextField?.text = valueString
self.btnLeftIncisor.associatedLabel?.text = valueString
}
// self.analysis.inputs is a Dictionary<String, Double?>
输入字典保存用户输入的信息 - 要么是数字,要么是 nil(如果用户尚未在匹配字段中输入任何内容)。
在以前版本的Swift下,代码是这样写的:
if let leftInc : Double? = self.analysis.inputs[self.btnLeftIncisor.dictionaryKey!]?? {
并且工作正常。
我看到了类似的问题here ,但在这种情况下,问题似乎是使用 Any?
的结果,但这里的情况并非如此。
最佳答案
swift 2.2
在 if let
中,您定义了另一个可选值,这就是为什么 nil
是合法的情况。 if let
主要用于从可选值中提取(也许)非可选值。
您可以尝试:
if let leftInc : Double = self.analysis.inputs[self.btnLeftIncisor.dictionaryKey!].flatMap ({$0}) {
// leftInc is not an optional in this scope
...
}
无论如何,我会考虑不将其作为单行,而是利用guard
案例。只是为了增强可读性。并避免 bang 运算符 (!
)。
关于swift - "if let"尽管值为 nil 仍执行语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30377703/