Odpowiedzi:
Jednym ze sposobów jest konwersja na łańcuchy (ponieważ są tylko dwie możliwości, nie jest to trudne):
NSLog(@" %s", BOOL_VAL ? "true" : "false");
Nie sądzę, że istnieje specyfikator formatu dla wartości logicznych.
Chciałbym polecić
NSLog(@"%@", boolValue ? @"YES" : @"NO");
ponieważ, um, BOOL
s są nazywane YES
lub NO
w Objective-C.
Użyj programu formatującego liczby całkowite %d
, który wypisze albo 0
albo 1
:
NSLog(@"%d", myBool);
W Objective-C BOOL
typ jest po prostu znakiem ze znakiem. Od <objc/objc.h>
:
typedef signed char BOOL;
#define YES (BOOL)1
#define NO (BOOL)0
Możesz więc wydrukować je za pomocą programu %d
formatującego Ale to spowoduje wydrukowanie tylko a 1
lub a 0
, nie YES
lub NO
.
Możesz też po prostu użyć ciągu znaków, jak sugerowano w innych odpowiedziach.
Ciągi formatujące używane z NSLog i [NSString stringWithFormat] są udokumentowane tutaj:
BOOL / bool / boolean nie są nawet wspomniane ...
Po prostu dodaj poniższą funkcję i przekaż jej BOOL
wartość, a metoda zwróciNSString
- (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
}
Uważam, że najłatwiej to zrobić:
NSLog(@" %@", @(BOOL_VAL));
@(wyrażenie)
Dynamicznie ocenia wyrażenie w ramce i zwraca odpowiedni literał obiektu na podstawie jego wartości (np. NSString dla const char *, NSNumber dla int, itp.).