tutorial guia objective-c xcode variables nstextfield

objective c - guia - Objetivo c verificar si el campo de texto está vacío



django tutorial (6)

Compruebe 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 } }

Aquí está el código:

- (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.


Esos ''funcionan'' de alguna manera. 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 // }


Joshua tiene la respuesta correcta en el caso restringido, pero en general, no puede comparar objetos de cadena utilizando los operadores == o! =. Debe usar -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.


La forma más eficiente de hacer esto es usando esto

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


Simplemente comprueba nulo y si 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 */ }


Ya tenemos un método incorporado que devuelve 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 */ }