Voici le code:
- (IBAction) charlieInputText:(id)sender {
//getting value from text field when entered
charlieInputSelf = [sender stringValue];
if (charlieInputSelf != @"") {
//(send field if not empty
}
}
Cela l'envoie même lorsque le champ est vide; par conséquent, cela ne fonctionne pas comme je le souhaite.
Vérifie simplement zéro et si la longueur du texte est supérieure à 0 - pas vide
if (textField.text && textField.text.length > 0)
{
/* not empty - do something */
}
else
{
/* what ever */
}
Nous avons déjà une méthode intégrée qui renvoie une valeur booléenne qui indique si les objets de saisie de texte ont du texte ou non.
// 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 */
}
Joshua a la bonne réponse dans le cas étroit, mais généralement, vous ne pouvez pas comparer les objets chaîne en utilisant les opérateurs == ou! =. Tu dois utiliser -isEqual:
ou -isEqualToString:
C'est parce que charlieImputSelf
et @""
sont en fait des pointeurs vers des objets. Bien que les deux séquences de caractères puissent être identiques, elles n'ont pas besoin de pointer au même emplacement en mémoire.
Ces "travaux" en quelque sorte. Cependant, j'ai trouvé que l'utilisateur peut simplement remplir la zone avec des espaces. J'ai trouvé que l'utilisation d'expressions régulières aide (bien que ce que j'utilise pour les mots sans espaces), je ne sais pas vraiment comment autoriser les espaces.
NSError *error = NULL;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"[ ]" options:NSRegularExpressionCaseInsensitive error:&error];
if (!([[inputField stringValue]isEqualTo:regex])) {
NSLog(@"Found a match");
// Do stuff in here //
}
La façon la plus efficace de le faire est d'utiliser ce
// 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
}
Vérifiez si le champ de texte est vide dans 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
}
}