所以当我按下按钮时,我会检查UITextField和UITextView是否都有一些值,但是如果它们是nil则执行此操作。
所以我尝试了这个,但它没有工作:
@IBOutlet weak var defTextView = UITextView
@IBAction func btnTapped(sender: UIButton) {
if let definitionName = defTextView.text {
print(definitionName)
} else {
print("nil")
}
}
而不是接收单词" nil"我得到了空的字符串打印
答案 0 :(得分:4)
defTextView.text为空字符串“”而不是nil。
尝试使用where子句检查它是否为空:
@IBOutlet weak var defTextView = UITextView
@IBAction func btnTapped(sender: UIButton) {
if let definitionName = defTextView.text where !definitionName.isEmpty {
print(definitionName)
} else {
print("nil")
}
}
答案 1 :(得分:1)
您的代码应该有效,但请记住,空字符串不是nil
。 UITextView
的文本不太可能是nil,所以我会使用if语句检查它是否为空字符串,以及是否允许解包。
例如,请改用:
if let defenitionName = defTextView.text where defTextView.text != nil {
print(definitionName)
} else {
print("none") //Not necessarily nil.
}
答案 2 :(得分:0)
尝试以下代码
if defTextView.text != nil || !(defTextView.text == "") {
print(definitionName)
} else {
print("nil")
}
答案 3 :(得分:0)
问题实际上毫无意义,因为文本视图的文本永远不会是nil
。
根据文档,text
的属性UITextView
是一个隐式展开的可选项 - 与UILabel
text
可以是nil
不同。
所以当它被使用时,它保证不是nil
,你只需要检查空字符串,不需要选项绑定或!= nil
。
@IBAction func btnTapped(sender: UIButton) {
let definitionName = defTextView.text
if definitionName.isEmpty {
print("definitionName is empty")
} else {
print("definitionName is not empty")
}
}