web-dev-qa-db-fra.com

Chaîne de formatage Objective-C pour boolean?

Quel formateur est utilisé pour les valeurs booléennes?

MODIFIER: 

Exemple: NSLog(@" ??", BOOL_VAL);, qu'est-ce que ???

110
Moshe

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.

164
Michael Myers

Je recommanderais

NSLog(@"%@", boolValue ? @"YES" : @"NO");

parce que, um, BOOLs sont appelés YES ou NO dans Objective-C.

65
Yuji

Utilisez le formateur entier %d qui imprimera soit 0, soit 1:

NSLog(@"%d", myBool);
45
Erin Geyer

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.

23
mipadi

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));
18
gigahari

Les chaînes de format à utiliser avec NSLog et [NSString stringWithFormat] sont documentées ici:

http://developer.Apple.com/mac/library/documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html

BOOL/bool/boolean ne sont même pas mentionnés ...

5
DLRdave

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
}
1
Bryan Norden

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

1
asamoylenko

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];
0
xlsmearlx