Quel formateur est utilisé pour les valeurs booléennes?
MODIFIER:
Exemple: NSLog(@" ??", BOOL_VAL);
, qu'est-ce que ??
?
Une façon de le faire est de convertir en chaînes (puisqu'il n'y a que deux possibilités, ce n'est pas difficile):
NSLog(@" %s", BOOL_VAL ? "true" : "false");
Je ne pense pas qu'il existe un spécificateur de format pour les valeurs booléennes.
Je recommanderais
NSLog(@"%@", boolValue ? @"YES" : @"NO");
parce que, um, BOOL
s sont appelés YES
ou NO
dans Objective-C.
Utilisez le formateur entier %d
qui imprimera soit 0
, soit 1
:
NSLog(@"%d", myBool);
En Objective-C, le type BOOL
est simplement un caractère signé. De <objc/objc.h>
:
typedef signed char BOOL;
#define YES (BOOL)1
#define NO (BOOL)0
Vous pouvez donc les imprimer à l'aide du formateur %d
. Mais cela n'imprimera qu'un 1
ou un 0
, pas YES
ou NO
.
Ou vous pouvez simplement utiliser une chaîne, comme suggéré dans d'autres réponses.
Ajoutez cette fonction en ligne à votre fichier .h
:
static inline NSString* NSStringFromBOOL(BOOL aBool) {
return aBool? @"YES" : @"NO";
}
Maintenant, vous êtes prêt à partir...
NSLog(@"%@", NSStringFromBOOL(BOOL_VAL));
Les chaînes de format à utiliser avec NSLog et [NSString stringWithFormat] sont documentées ici:
BOOL/bool/boolean ne sont même pas mentionnés ...
Ajoutez simplement la fonction ci-dessous et transmettez-lui la valeur BOOL
. La méthode renverra la NSString
- (NSString *)boolValueToString:(BOOL)theBool {
if (theBool == 0)
return @"NO"; // can change to No, NOOOOO, etc
else
return @"YES"; // can change to YEAH, Yes, YESSSSS etc
}
Je crois que le moyen le plus simple de faire ceci est:
NSLog(@" %@", @(BOOL_VAL));
@(expression)
Évalue dynamiquement l'expression encadrée et renvoie le littéral d'objet approprié en fonction de sa valeur (c'est-à-dire NSString pour const char *, NSNumber pour int, etc.)
J'ai créé une catégorie de NSString avec cette
+ (instancetype)stringWithBool:(BOOL)boolValue {
return boolValue ? @"YES" : @"NO";
}
Et utilisez-le comme ceci:
[NSString stringWithBool:boolValue];