对变量使用if条件?Swift 5中

  • 本文关键字:Swift 条件 if 变量 ios swift
  • 更新时间 :
  • 英文 :


我不知道如何调用这个场景。假设我有这个可变

let text: String?

它怎么能被编码成我的if条件是这样的:

if (text == nil || Float(text) > 0) {
print("i am in")
}

我一直在调用初始化程序时没有完全匹配

这里有两个问题:

  1. 文本是String?,因此需要展开它才能将其传递给Float()

  2. Float()返回一个可选项,该项也应展开以与>运算符一起使用。

我会避免强制展开,你可以做一些类似的事情:

let text: String? = nil
if let textString = text, let number = Float(textString)  {
if number > 0 {
print("I am in")
}
else {
print("I am out")
}
}
else {
print("I am in")
}

首先,看起来您想要检查文本是否为!=nil,则如果文本是数字,则检查如果文本>0

因为这里有可选的字符串,所以应该有一个特定的字符串来检查字符串文本是否不是nil。然后检查它是否是数字。代码将像这个

extension String  {
var isNumber: Bool {
return Double(self) != nil
}
}

然后结合你的条件

if text == nil || (text!.isNumber && Float(text!)! > 0) {
print("i am in")
}

结果会像这个

let text: String? = "2.0" // i am in
let text: String? = nil // i am in
let text: String? = "-1.0" // nothing print

text是可选

if (text == nil) || Float(text ?? "") ?? 0 > 0 {
print("i am in")
}

必须做另外两件事:

  1. 检查text是否为nil后,必须仍然打开可选的text才能将其与Float()构造函数一起使用。在这里,我使用了强制展开!,这通常是危险的,但我们知道,由于第一次测试,此时text不能是nil。如果textnil,则||使用短路评估返回true而不执行右侧。

  2. 接下来,Float(text!)返回一个Float?,因为该文本可能无法转换为有效的Float。为了解开它,我使用了nil合并运算符??来解开Float值,或者如果值是nil,则使用0

    if text == nil || Float(text!) ?? 0 > 0 {
    print("i am in")
    }
    

最新更新