2011-07-19 21 views
15

我想要做這樣的事情:是否有一個格式說明符與布爾值一起使用?

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

其中x是符。但我找不到一個!我想避免:

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

任何想法?文檔沒有布爾說明符。 %@也沒有工作。

+1

有趣的是%x會起作用。 (小寫十六進制說明符) – Joe

+0

'%@'是Objective-C對象指針的格式說明符。布爾,布爾,布爾等不是對象類型。 – Caleb

回答

31

這裏是工作的兩件事情:

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

,或者你可以投:

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

將輸出0或1

+0

謝謝,我忘了? :開關! –

+2

你不需要演員。 'NSLog()'是可變參數,'signed char'('BOOL')將被隱含地提升爲'int'。 – 2013-04-17 14:54:33

7

可以將其轉換爲int並使用%d

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

還是用這樣的:

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

演員沒有必要,請參閱我對PengOne的回答的評論。 – 2013-04-17 14:54:57

3

有沒有格式說明,我知道的。你可以這樣做:

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

或者,你可以寫使用上述邏輯,需要一個BOOL並返回相應的字符串小功能或宏。然後您可以在日誌語句中使用該功能。

0

下面是代碼:

NSLog(@"%hhd",BOOLvariable); 

打印1表示是,0表示打給我。

+0

從iOS10(可能更早)引發'%i'的警告,但是,即使沒有顯式(int)強制轉換,也不會再引發警告。 –

-1

對於BOOL值,可以使用格式說明符%hhd。例如:

NSLog(@"You got: %hhd", booleanValue); 
+1

這與@ViruMax的答案相同。 – UditS

相關問題