使用警卫来检查文本字段的值

时间:2016-12-13 23:39:05

标签: ios swift3 guard

我正在尝试使用guard而不是if / else语句来检查我的输入字段是否为空或者是否包含默认文本。这是我正在尝试使用的警卫,但它总是会失败,即使文本字段中包含除了默认文本之外的内容。

guard (name.text?.isEmpty)!, name.text! == "Add Name" else{
        // call the warning function
        warningMessage()
        return
    }
    print("made it")
    // dismiss the viewcontroller

这是我将用于if / else语句

     if(personName.text == "" || personName.text == "Add a name"){
         warningMessage()
      }else{
             }

4 个答案:

答案 0 :(得分:0)

你的逻辑错了,你编写它的方式如果name.text为nil会崩溃。

你想要这样的东西:

placeholder = name.placeholder ?? ""
guard let text = name.text,
  !text.isEmpty {
    // call the warning function
    warningMessage()
    return
}
print("made it")

那说:

  

如果name.text为nil,如果为空,或者包含,则退出   占位符值

编辑:

正如@LeoDabus在评论中指出的那样,您应该在文本字段中使用占位符字符串,而不是设置文本值。那么您不需要与起始文本值进行比较。

答案 1 :(得分:0)

guard let text = name.text, text.isEmpty || text == "Add Name" else {
    if name.text == nil { 
        // input field is empty     
    }
    return
}

// input field is empty or had the default text in it

答案 2 :(得分:0)

如果你想确定

  • 文本字段为空
  • AND warningMessage()包含字符串inSampleSize

你可以写

if(Character.isLetter(character))
{
//Do conversion here
}

答案 3 :(得分:0)

不是在text属性中添加“添加名称”,为什么不将它放在placeholder属性中?这样,你只检查它是否为空。您可以将占位符文本的颜色更改为正常。

guard let text = name.text, text.isEmpty 
    else { return }