Objective-C строка форматирования для boolean?

Какой форматтер используется для булевых значений?

ИЗМЕНИТЬ:

Пример: NSLog(@" ??", BOOL_VAL);, что есть ???

Ответ 1

Один из способов сделать это - преобразовать в строки (поскольку есть только две возможности, это не сложно):

NSLog(@" %s", BOOL_VAL ? "true" : "false");

Я не думаю, что существует спецификатор формата для булевых значений.

Ответ 2

Я бы порекомендовал

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

потому что, um, BOOL называются YES или NO в Objective-C.

Ответ 3

Используйте целочисленный форматтер %d, который будет печатать либо 0, либо 1:

NSLog(@"%d", myBool);

Ответ 4

В Objective-C тип BOOL представляет собой только подписанный char. От <objc/objc.h>:

typedef signed char BOOL;
#define YES         (BOOL)1
#define NO          (BOOL)0

Итак, вы можете распечатать их с помощью форматирования %d. Но это будет печатать только теги 1 или 0, а не YES или NO.

Или вы можете просто использовать строку, как это предложено в других ответах.

Ответ 5

Добавьте этот макрос в ваш .h файл

static inline NSString* NSStringFromBOOL(BOOL aBool) {
    return aBool? @"YES" : @"NO"; }

Теперь вы готовы пойти...

NSLog(@"%@", NSStringFromBOOL(BOOL_VAL) );

Ответ 7

Просто добавьте функцию ниже и передайте ее значение 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
}

Ответ 8

Я создал категорию NSString с этим

+ (instancetype)stringWithBool:(BOOL)boolValue {
return boolValue ? @"YES" : @"NO";
}

И используйте его следующим образом:

[NSString stringWithBool:boolValue];