コードは次のとおりです。
- (IBAction) charlieInputText:(id)sender {
//getting value from text field when entered
charlieInputSelf = [sender stringValue];
if (charlieInputSelf != @"") {
//(send field if not empty
}
}
これは、フィールドが空の場合でも送信します。したがって、これは私が望むようには機能しません。
単にnilをチェックし、テキストの長さが0より大きいかどうか-空ではない
if (textField.text && textField.text.length > 0)
{
/* not empty - do something */
}
else
{
/* what ever */
}
テキスト入力オブジェクトにテキストがあるかどうかを示すブール値を返す組み込みメソッドが既にあります。
// 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 */
}
ジョシュアは狭い場合に正しい答えを持っていますが、一般的に、==または!=演算子を使用して文字列オブジェクトを比較することはできません。 -isEqual:
または-isEqualToString:
を使用する必要があります。これは、charlieImputSelf
および@""
が実際にはオブジェクトへのポインターであるためです。 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 //
}
これを行う最も効率的な方法は、これを使用することです
// 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
}
Swiftでテキストフィールドが空かどうかを確認します
@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
}
}