目标c检查文本字段是否为空

obj*_*001 36 variables xcode objective-c nstextfield

这是代码:

- (IBAction) charlieInputText:(id)sender {
    //getting value from text field when entered
    charlieInputSelf = [sender stringValue];

    if (charlieInputSelf != @"") {
        //(send field if not empty
    }
}    
Run Code Online (Sandbox Code Playgroud)

即使字段为空,也会发送它; 因此,这不符合我的要求.

Jos*_*erg 85

只需检查nil以及文本长度是否大于0 - 不为空

if (textField.text && textField.text.length > 0)
{
   /* not empty - do something */
}
else
{
   /* what ever */
}
Run Code Online (Sandbox Code Playgroud)

  • 我觉得Stack已经成为比任何主要平台官方文档更有用的参考 (14认同)
  • 实际上如果textField是nil那么textField.text.lenght == 0.所以你可以减少if为:`if(textField.text.lenght> 0)` (3认同)

Gau*_*dey 54

我们已经有内置方法返回布尔值,指示文本输入对象是否有任何文本.

// In Obj-C
if ([textField hasText]) {
        //*    Do Something you have text
    }else{
         /* what ever */
    }

// In Swift

if textField.hasText {
    //*    Do Something you have text
}else{
     /* what ever */
}
Run Code Online (Sandbox Code Playgroud)

  • 这应该是正确的(接受的)答案 (13认同)
  • 我不知道 hasText ! (2认同)
  • 这是最优雅的答案!谢谢 (2认同)

Jer*_*myP 8

约书亚在狭义的情况下有正确的答案,但一般来说,你不能使用==或!=运算符来比较字符串对象.你必须使用-isEqual:或者-isEqualToString: 这是因为charlieImputSelf并且@""实际上是指向对象的指针.虽然两个字符序列可能相同,但它们不需要指向内存中的相同位置.

  • 因此,如果你想检查文本字段的值是否等于`Boo`,你必须使用`if([textField.text isEqualToString:@"Boo"])`而不是`if(textField. text == @"Boo")` (3认同)