Swift 如果 textField 为空,则给出具体文本

Swift give specific text if textField is empty

我想检查 textField 是否为空,如果为空,请给出具体的文本。 我试过如下但它 returns ""

let text = textField.text ?? "abc"
let value = ["text": text]
//put firebase database
ref.child("text").setValue(value)

我该如何解决这个问题?提前致谢!

问题是您总是得到一个不是 nil 的空字符串。您可以按以下方式更正:

let text = (textField.text ?? "").isEmpty ? "abc" : textField.text

您必须确保 text 属性 不为 nil 并且不包含空字符串:

let text: String
if let textFieldText = textField.text, !textFieldText.isEmpty {
    text = textFieldText
} else {
    text = "abc"
}

稍微修改安东的答案,你可以使用:

let text = (textField.text ?? "").isEmpty ? "abc" : textField.text!

(强制展开第 2 次出现的 textField.text,因此 text 不是可选的。)

在那种情况下,强制展开是安全的,因为第一个 ?? "nil 合并运算符将处理 textField.text == nil.

的情况

如果您不想使用强制解包,请将转换分成两行:

let required = str ?? ""
let text = required.isEmpty ? "abc" : required

Daibaku,您在评论中展示的解决方案:

guard let text = (textField.text ?? "").isEmpty ? "abc" : textField.text else { 
  return 
}
print(text)

如果 textField.text == nil

将 return 不执行打印语句(或守卫后面的任何内容)