2010-07-04 41 views
34

下面的代码:目标C检查是否文本字段为空

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

    if (charlieInputSelf != @"") { 
     //(send field if not empty 
    } 
}  

这将是即使该字段为空;因此,这不符合我的要求。

回答

80

简单的检查零,如果文本长度的长度大于0 - 不为空

if (textField.text && textField.text.length > 0) 
{ 
    /* not empty - do something */ 
} 
else 
{ 
    /* what ever */ 
} 
+12

空我觉得堆栈已经变得比一个更有参考价值任何主要平台的官方文档 – ChuckKelly 2014-02-08 09:55:50

+2

其实如果textField是零,那么textField.text.lenght == 0.所以你可以减少if: if(textField.text.lenght> 0)' – 2015-01-19 21:01:52

+0

这两个条件是相互依赖的。只保留一个条件。因为0&0 = 0,1&1 = 1 – Saranjith 2017-07-31 06:58:47

6

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

+3

所以如果你想检查文本字段的值是否等于'Boo',你必须使用'if([textField.text isEqualToString: @“Boo”])''而不是'if(textField.text == @“Boo”)' – 2010-07-04 12:52:17

+0

是的(这很烦人,我不能只在这个文本框中输入'yes') – JeremyP 2010-07-04 15:50:07

2

这些'工作'的方式。但是,我发现用户可以用空格填充框。我发现使用正则表达式有助于(尽管我使用的是没有空格的词)我无法真正弄清楚如何让空格。

NSError *error = NULL; 
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"[ ]" options:NSRegularExpressionCaseInsensitive error:&error]; 

if (!([[inputField stringValue]isEqualTo:regex])) { 
     NSLog(@"Found a match"); 
// Do stuff in here // 
} 
49

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

// 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 */ 
} 
+12

这应该是正确的)回答 – 2015-01-20 01:09:41

+0

我不知道hasText! – DogCoffee 2015-11-19 23:13:41

+0

let clientName = clientNameTF.hasText()? clientNameTF.text! :“客户名称” – DogCoffee 2015-11-19 23:21:24

1

最efficent方式做,这是通过使用此

// set it into an NSString 
NSString *yourText = yourVariable.text; 

if([theText length] == 0]) 
{ 
// Your Code if it is equal to zero 
} 
else 
{ 
// of the field is not empty 

} 
1

检查文本字段是否是斯威夫特

@IBOutlet weak var textField: NSTextField! 
    @IBOutlet weak var multiLineTextField: NSTextField! 

    @IBAction func textChanged(sender: AnyObject) { 
    //println("text changed! \(textField.stringValue)") 

    if textField.stringValue.isEmpty == false { 
     multiLineTextField.becomeFirstResponder() 
     multiLineTextField.editable = true 
    } else { 
     multiLineTextField.editable = false 
    } 
    }