Відповіді:
Один із способів зробити це - перетворити на рядки (оскільки є лише дві можливості, це не важко):
NSLog(@" %s", BOOL_VAL ? "true" : "false");
Я не думаю, що існує специфікатор формату для булевих значень.
Я б рекомендував
NSLog(@"%@", boolValue ? @"YES" : @"NO");
тому що, гм, BOOL
s називаються YES
або NO
в Objective-C.
Використовуйте цілочисельний формат %d
, який надрукує 0
або 1
:
NSLog(@"%d", myBool);
У Objective-C BOOL
тип - це лише підписаний знак. Від <objc/objc.h>
:
typedef signed char BOOL;
#define YES (BOOL)1
#define NO (BOOL)0
Таким чином, ви можете роздрукувати їх за допомогою %d
форматера, але це буде друкувати лише a 1
або a 0
, не YES
або NO
.
Або ви можете просто використовувати рядок, як пропонується в інших відповідях.
Тут задокументовано рядки формату для використання з NSLog та [NSString stringWithFormat]:
BOOL / bool / boolean навіть не згадується ...
Просто додайте нижченаведену функцію і передайте їй BOOL
значення і метод поверне назад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
}
Я вважаю, що найпростіший спосіб зробити це:
NSLog(@" %@", @(BOOL_VAL));
@ (вираз)
Динамічно оцінює виражений ящик і повертає відповідний літерал об'єкта на основі його значення (тобто NSString для const char *, NSNumber для int тощо).