2010-04-08 81 views

回答

156

一種方式來做到這一點是轉換爲字符串(因爲只有兩種可能,這是不難):

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

我不認爲這是布爾值的格式說明。

+1

不應輸出字符串:「是」和「否」:P – 2010-04-08 22:22:12

+119

或「蛋糕」和「無蛋糕」。無論你適合什麼。 – 2010-04-08 22:23:40

+2

我喜歡蛋糕,沒有蛋糕!我將替換所有的x?@「YES」:@「NO」代碼與x?@「蛋糕」:@「沒有蛋糕」馬上:D--好吧,至少對我的對象描述來說); – 2010-04-08 23:26:05

61

我會建議

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

因爲,嗯,BOOL s的在Objective-C稱爲YESNO

+2

對於宏或函數來說,它似乎是一個明顯的實用工具(如果只是爲了避免字符串文字在整個應用程序中傳播)。 – 2010-04-09 13:48:39

+8

-1用於諷刺「um」 – delux247 2013-01-07 21:15:26

22

在Objective-C中,BOOL類型只是一個有符號的字符。從<objc/objc.h>

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

所以您在使用%d格式可以打印,但他們將只打印10,不YESNO

或者您可以使用一個字符串,正如其他答案中所建議的那樣。

+1

%c不會嘗試打印ASCII字符0或1,它們都是控制字符嗎? – JeremyP 2010-04-09 10:22:19

+2

確實。應該使用'%d'。 – mipadi 2010-04-09 12:04:27

40

使用整數格式%d,其將打印01

NSLog(@"%d", myBool); 
+3

儘管xcode抱怨。 – Fresheyeball 2013-02-06 20:53:10

17

添加此內聯函數您.h文件:

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

現在你已經準備好去...

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

只需添加下面的函數,並將它傳遞的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 
} 
0

我創建的NSString的類別與此

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

而且使用這樣的:

[NSString stringWithBool:boolValue];