Comment écrire un BOOL prédicat dans la Base de Données?
J'ai un attribut de type BOOL
et je veux effectuer une recherche de tous les objets gérés où cet attribut est YES
.
Pour les attributs de la chaîne, il est simple. J'ai créer un prédicat comme ceci:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"userName = %@", userName];
Mais comment dois-je faire, si j'ai un bool attribut appelé sélectionné et je veux faire un prédicat pour cela? Pourrais-je faire quelque chose comme cela?
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"selected = %@", yesNumber];
Ou dois-je besoin d'autres spécificateurs de format et juste passer YES
?
Vous devez vous connecter pour publier un commentaire.
De Prédicat Guide De Programmation:
Vous spécifiez et test d'égalité de valeurs Booléennes, comme illustré dans les exemples suivants:
Vous pouvez aussi consulter les Prédicat Format Syntaxe De La Chaîne De.
Swift 4.0
nil
valeurs d'attribut sera trouvé. Par exemple, définissez la valeur d'un attribut ànil
(nous allons dire que vous l'avez appeléboolAttribute
comme indiqué dans cette réponse). Ensuite, créez votre prédicat:let predicate = NSPredicate(format: "boolAttribute == %@", boolValue)
. Note:boolValue
doit être égale àtrue
oufalse
, PASNSNumber(value: boolValue)
. L'résultant de prédicat sera:boolAttribute == nil
. Que le prédicat est de retour de tous les objets oùboolAttribute
estnil
. Peut ne pas fonctionner pour toujours...Swift 3
Dans Swift 3, vous devez utiliser
NSNumber(value: true)
.À l'aide de
NSNumber(booleanLiteral: true)
et en général de tout littérale initialiser directement est découragé et par exemple SwiftLint (v. 0.16.1) permettra de générer de avertissement pour l'utilisation de laExpressibleBy...Literal
initialiser directement:NSPredicate(format: "boolAttribute == %@", true as NSNumber)
Ne convertissez pas NSNumber, ni utiliser de double "=="
Plus approprié pour Swift 4:
Remarque: "true" dans cet exemple est un Bool (une structure (Struct)
Swift 3.0 a apporté une légère modification à la présente:
Swift 4
Swift 3