Comment vérifier si un champ de texte est vide ou n'est pas en swift
Je suis en train de travailler sur le code ci-dessous pour vérifier la textField1
et textField2
les champs de texte, s'il existe une entrée ou non.
La IF
instruction ne fait rien quand j'appuie sur le bouton.
@IBOutlet var textField1 : UITextField = UITextField()
@IBOutlet var textField2 : UITextField = UITextField()
@IBAction func Button(sender : AnyObject)
{
if textField1 == "" || textField2 == ""
{
//then do something
}
}
Vous devez vous connecter pour publier un commentaire.
Simplement en comparant les textfield objet à la chaîne vide
""
n'est pas la bonne façon d'aller à ce sujet. Vous devez comparer le champ detext
bien, car il est un type compatible et détient les informations que vous recherchez.Swift 2.0:
Garde:
si:
Swift 3.0:
Garde:
si:
if let text = descriptionLabel.text, !text.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines).isEmpty {
Meilleur et plus beau utiliser
text
propriété est facultative. Vérifier ma réponse ci-dessous.text property
est facultatif. Ajouter ! après:if textField1.text!.isEmpty || textField2.text!.isEmpty
...un autre moyen de vérifier en temps réel textField source :
si laisser ... où ... {
Swift 3:
Swift 2:
garde ... où ... else {
Vous pouvez également utiliser le mot-clé
guard
:Swift 3:
Swift 2:
C'est particulièrement grand pour la validation de chaînes, dans les formulaires par exemple. Vous pouvez écrire un
guard let
pour chaque validation et de retourner ou de lever une exception si il y a une grave erreur.Comme aujourd'hui dans swift 3 /xcode 8 propriété text est facultatif, vous pouvez le faire comme ceci:
ou:
Vous pouvez également faire une extenstion comme ci-dessous et l'utiliser à la place:
text?.isEmpty ?? true
est faux. il ne déballe le texte de la propriété, mais le résultat (true
) ne sera jamais appelé. La syntaxe correcte esttext?.isEmpty ?? false
outext?.isEmpty == true
. Je préfère le plus tard, mais dans ce cas spécial, que le texte ne reviendront jamais à zéro, vous pouvez juste la force de déballerreturn text!.isEmpty
text?.isEmpty ?? false
ettext?.isEmpty == true
sont incorrectes, car dans les deux cas, vous supposez que le texte ne peut pas être nul qui est une hypothèse erronée (voir Apple définition dans UITextField:open var text: String? // default is nil
) Apple a donc là, effectivement, il est possible de le néant. Dans la pratique, il n'est actuellement pas un néant, mais cela pourrait changer à l'avenir, surtout si Apple mettre des commentaires dans leur code. Par conséquent, si le texte est nul, vous devez la traiter comme champ est vide. À l'aide de hasText propriété est bien, mais il n'est disponible que pour iOS 10.0+Un compact à petit bijou pour Swift 2 /Xcode 7
Peut-être que je suis un peu trop tard, mais nous ne pouvons pas vérifier comme ceci:
Bien, ce pourrait être la fin, mais dans Xcode 8 j'ai une solution:
Swift 4/xcode 9
J'ai juste essayé de vous montrer la solution dans un simple code
Il est trop tard et sa fonctionne très bien dans Xcode 7.3.1
J'ai utilisé
UIKeyInput
s'construit en fonction dehasText
: docsPour Swift 2.3 j'ai eu à l'utiliser comme une méthode au lieu d'une propriété (comme il est référencé dans les docs):
.hasText
Swift 4.x Solution
Swift 4.2
Vous pouvez utiliser une fonction générale pour tous vos textField il suffit d'ajouter la fonction suivante dans votre contrôleur de base
return (text.trimmingCharacters(in: .whitespaces).isEmpty) ? false : true
Moyen facile de Vérifier