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 不执行打印语句(或守卫后面的任何内容)
我想检查 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