Существует ли спецификатор формата, который работает с булевыми значениями?

Я хочу сделать что-то вроде этого:

NSLog(@"You got: %x", booleanValue);

где x - спецификатор. Но я не могу найти его! Я хочу избежать:

if (booleanValue) {
    NSLog(@"You got: YES");
}
else {
    NSLog(@"You got: NO");
}

Есть идеи? Документы не имели логического спецификатора. %@ тоже не работает.

Ответ 1

Вот две вещи, которые работают:

NSLog(@"You got: %@",booleanValue ? @"YES" : @"NO");

или вы можете использовать:

NSLog(@"You got: %d", (int)booleanValue);

Который выдает 0 или 1

Ответ 2

Вы можете передать его в int и использовать %d:

NSLog(@"You got: %d", (int)booleanValue);

Или используйте что-то вроде этого:

NSLog(@"You got: %@", booleanValue ? @"YES" : @"NO");

Ответ 3

Там нет спецификатора формата, о котором я знаю. Вы можете сделать это:

NSLog(@"You got: %@", (booleanValue ? @"YES" : @"NO"));

В качестве альтернативы вы могли бы написать небольшую функцию или макрос, используя вышеприведенную логику, которая принимает BOOL и возвращает соответствующую строку. Затем вы можете использовать эту функцию в своих операторах журнала.

Ответ 4

да

Вот код:

NSLog(@"%hhd",BOOLvariable);

Печать 1 для "Да" и "0" для "Нет". Работала для меня.