如果textField为空,则Swift给出特定文本

时间:2018-02-03 11:53:57

标签: ios swift uitextfield

我想检查textField是否为空,如果为空,则提供特定文本。 我尝试过如下,但它返回“”

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

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

3 个答案:

答案 0 :(得分:3)

问题是你总是得到一个空的字符串,而不是零。您可以按照以下说明进行更正:

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

稍微修改Anton的答案,您可以使用:

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

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

在这种情况下,强制解包是安全的,因为第一个??“无合并运算符将处理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

,将返回而不执行print语句(或后面的任何内容)