Какой форматер используется для логических значений?
РЕДАКТИРОВАТЬ:
Пример: NSLog(@" ??", BOOL_VAL);
, что такое ??
?
Какой форматер используется для логических значений?
РЕДАКТИРОВАТЬ:
Пример: NSLog(@" ??", BOOL_VAL);
, что такое ??
?
Один из способов сделать это - преобразовать в строки (поскольку есть только две возможности, это несложно):
NSLog(@" %s", BOOL_VAL ? "true" : "false");
Я не думаю, что для логических значений существует спецификатор формата.
я бы порекомендовал
NSLog(@"%@", boolValue ? @"YES" : @"NO");
потому что, гм, BOOL
называются YES
или NO
в Objective-C.
Используйте средство форматирования целых чисел %d
, которое напечатает либо 0
, либо 1
:
NSLog(@"%d", myBool);
В Objective-C тип BOOL
— это просто знаковый char. От <objc/objc.h>
:
typedef signed char BOOL;
#define YES (BOOL)1
#define NO (BOOL)0
Таким образом, вы можете распечатать их с помощью средства форматирования %d
. Но это будет печатать только 1
или 0
, а не YES
или NO
.
Или вы можете просто использовать строку, как это предлагается в других ответах.
Добавьте эту встроенную функцию в ваш файл .h
:
static inline NSString* NSStringFromBOOL(BOOL aBool) {
return aBool? @"YES" : @"NO";
}
Теперь вы готовы идти...
NSLog(@"%@", NSStringFromBOOL(BOOL_VAL));
Строки формата для использования с NSLog и [NSString stringWithFormat] задокументированы здесь:
BOOL/bool/boolean даже не упоминается...
Я считаю, что самый простой способ сделать это:
NSLog(@" %@", @(BOOL_VAL));
@(выражение)
Динамически оценивает упакованное выражение и возвращает соответствующий литерал объекта на основе его значения (т. е. NSString для const char*, NSNumber для int и т. д.).
Просто добавьте приведенную ниже функцию и передайте ей значение 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
}
Я создал категорию NSString с этим
+ (instancetype)stringWithBool:(BOOL)boolValue {
return boolValue ? @"YES" : @"NO";
}
И используйте это так:
[NSString stringWithBool:boolValue];