Ответы:
Один из способов сделать это - преобразовать в строки (поскольку есть только две возможности, это несложно):
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 и т. Д.).