comment comparer la valeur de swift facultatif
var someString: String? = "a"
someString = "b"
// or someString = nil
Condition: someString n'est pas nul, et "un"
Exemple:
if someString != nil && someString != "a" {
}
Est-il possible à la condition d'un seul?
Eh bien, puisque vous avez maintenant complètement changé votre question... je n'ai aucune idée de ce que vous êtes en train de demander. Le code que vous aurez à travailler, mais il ne correspond pas au texte. (!= s/b == d'après le texte)
someString = "b" ou someString = nil
Il n'est toujours pas clair du tout ce que vous demandez. "Est-il possible à la condition d'un seul?" n'a aucun sens. Aucun de vos exemples correspondre à la "Condition" que vous donnez dans votre question. L'expression la plus simple qui répond effectivement à la "Condition" figurant dans votre question, est donné dans ma réponse ci-dessous.
Je suis désolé. Ma question semble stupide.
Pas tellement ridicule qu'incertaine. Si vous êtes désireux de vérifier que
someString = "b" ou someString = nil
Il n'est toujours pas clair du tout ce que vous demandez. "Est-il possible à la condition d'un seul?" n'a aucun sens. Aucun de vos exemples correspondre à la "Condition" que vous donnez dans votre question. L'expression la plus simple qui répond effectivement à la "Condition" figurant dans votre question, est donné dans ma réponse ci-dessous.
Je suis désolé. Ma question semble stupide.
Pas tellement ridicule qu'incertaine. Si vous êtes désireux de vérifier que
someString
n'est pas nul et n'EST PAS "un", alors c'est quelque chose comme Antonios réponse someString != nil && someString! != "a"
Si vous voulez quelque chose n'est pas nul et EST "un", alors qu'il est plus simple puisque vous pouvez la réduire à ma réponse.
OriginalL'auteur jjaeko | 2014-08-25
Vous devez vous connecter pour publier un commentaire.
Je suppose que vous voulez dire que vous souhaitez tester pour
someString != nil
etsomeString != "a"
dans une seule expression logique (et non pas deux, et).Non, je ne pense pas que c'est possible en utilisant le haut dans les opérateurs, mais c'est faisable mise en œuvre d'une Chaîne d'extension comme ceci:
et vous pouvez l'utiliser comme suit:
Additif: Une solution plus élégante est de définir votre propre opérateur logique. J'ai utilisé
!~=
mais n'hésitez pas à utiliser votre propre.Testé comme suit:
Vous pouvez affiner lorsque vous traitez avec
nil
valeurs (comme ajouter une case pour les deux, d'avoirnil
et le retourtrue
, dans le cas où vous souhaitez que la condition "des deux côtés, sont nuls" à true)A ajouté une autre solution - mieux, à mon avis
OriginalL'auteur Antonio
La façon correcte dans Swift 3 est d'utiliser un multi-clause de condition:
https://github.com/apple/swift-evolution/blob/master/proposals/0099-conditionclauses.md
OriginalL'auteur lkraider
Avoir un essai avec une clause where:
OriginalL'auteur ZLN
Vous pouvez réduire le tout à l'aide de l'option de déballage de l'opérateur:
C'est ce que j'aurais cru, mais ne compile pas (au moins!)
error: '?' must be followed by a call, member lookup, or subscript
ce ne sera pas compiler
OriginalL'auteur David Berry
swift 1.2 pour
var a:int?; var b:int?
a la matriceOriginalL'auteur john07
Un truc:
OriginalL'auteur John LaBarge
un peu en retard à la fête, mais que diriez-vous simplement ceci (en supposant que vous ne voulez comparer des chaînes de caractères):
OriginalL'auteur Marcio Arantes
Cette extension en Option permettra de comparer les Options et ses enveloppé valeur.
OriginalL'auteur Arbitur