Objective-C格式化string为布尔?

什么格式化程序用于布尔值?

编辑:

例如: NSLog(@" ??", BOOL_VAL); ,什么是??

一种方法是转换为string(因为只有两种可能性,并不难):

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

我不认为有布尔值的格式说明符。

我会推荐

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

因为在Objective-C中,这个BOOL被称为YESNO

使用整数格式化程序%d ,它将打印01

 NSLog(@"%d", myBool); 

在Objective-C中, BOOLtypes只是一个有符号的字符。 从<objc/objc.h>

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

所以你可以使用%d格式化程序打印它们。但是,这只会打印一个10 ,而不是YESNO

或者你可以使用一个string,如其他答案中所build议的。

将此macros添加到.h文件

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

现在你已经准备好了

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

格式化string用于NSLog和[NSString stringWithFormat]在这里logging:

http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html

布尔/布尔/布尔甚至没有提到…

我用这个创build了一个NSString类

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

像这样使用它:

 [NSString stringWithBool:boolValue]; 

只需添加下面的函数并将其传递给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 }