2010-07-04 14 views
34

Aquí está el código:objetivo comprobar si el campo de texto está vacío

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

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

Esto lo envía incluso cuando el campo está vacío; por lo tanto, esto no funciona como yo quiero.

Respuesta

80

simplemente comprueba por nula y si la longitud de la longitud del texto es mayor que 0 - no está vacío

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

Siento que la pila se ha convertido en una referencia más útil que cualquier documentación oficial de plataformas principales – ChuckKelly

+2

En realidad, si textField es nil, entonces textField.text.lenght == 0. Entonces puedes reducir el if a: 'if (textField.text.lenght> 0)' –

+0

Ambas condiciones dependen mutuamente. Mantenga solo una condición.Desde 0 y 0 = 0, 1 & 1 = 1 – Saranjith

6

Joshua tiene la respuesta correcta en el caso estrecho, pero en general, no se puede comparar objetos de cadena usando el == o! = operadores. Debe utilizar -isEqual: o -isEqualToString: Esto es porque charlieImputSelf y @"" son en realidad punteros a los objetos. Aunque las dos secuencias de caracteres pueden ser iguales, no necesitan apuntar a la misma ubicación en la memoria.

+3

Entonces, si desea verificar si el valor del campo de texto es igual a 'Boo', tendría que usar 'if ([textField.text isEqualToString: @ "Boo"]) 'en lugar de' if (textField.text == @ "Boo") ' –

+0

Sí (es molesto No puedo simplemente ingresar 'sí' en este cuadro de texto) – JeremyP

2

Esos 'trabajos' en cierto modo. Sin embargo, descubrí que el usuario puede completar el cuadro con espacios. Descubrí que el uso de expresiones regulares ayuda (aunque lo que uso es para palabras sin espacios) realmente no puedo entender cómo hacer espacios para permitir.

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

Ya tenemos el método inbuilt que arroja un valor booleano que indica si los objetos de entrada de texto tienen algún texto o no.

// 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

Esto debería ser el correcto (aceptado) respuesta –

+0

¡No sabía sobre hasText! – DogCoffee

+0

let clientName = clientNameTF.hasText()? ¡clientNameTF.text! : "Nombre del cliente" – DogCoffee

1

la forma más eficiente de hacer esto es mediante el uso de esta

// 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

Comprobar si el campo de texto está vacío en 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 
    } 
    } 
Cuestiones relacionadas