如果条件swift,如何检查nil字符串

时间:2016-07-09 08:01:47

标签: ios swift

所以当我按下按钮时,我会检查UITextField和UITextView是否都有一些值,但是如果它们是nil则执行此操作。

所以我尝试了这个,但它没有工作:

@IBOutlet weak var defTextView = UITextView

@IBAction func btnTapped(sender: UIButton) {

    if let definitionName = defTextView.text {

        print(definitionName)

    } else {

        print("nil")

    }
}

而不是接收单词" nil"我得到了空的字符串打印

4 个答案:

答案 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)

您的代码应该有效,但请记住,空字符串不是nilUITextView的文本不太可能是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")
   }
}