布尔值使用什么格式化程序?
编辑:
例句: NSLog(@" ??", BOOL_VAL);,什么是 ???
NSLog(@" ??", BOOL_VAL);
??
一种方法是转换为字符串(因为只有两种可能性,所以这并不难) :
NSLog(@" %s", BOOL_VAL ? "true" : "false");
我认为布尔值没有格式说明符。
我建议
NSLog(@"%@", boolValue ? @"YES" : @"NO");
因为 BOOL在 Objective-C 中被称为 YES或者 NO。
BOOL
YES
NO
在 Objective-C 中,BOOL类型只是一个有符号的字符:
typedef signed char BOOL; #define YES (BOOL)1 #define NO (BOOL)0
所以你可以打印他们使用 %d格式化,但这将只打印一个 1或 0,而不是 YES或 NO。
%d
1
0
或者你也可以使用字符串,就像其他答案中建议的那样。
Format strings for use with NSLog and [NSString stringWithFormat] are documented here:
Http://developer.apple.com/mac/library/documentation/cocoa/conceptual/strings/articles/formatspecifiers.html
甚至没有提到 BOOL/BOOL/boolean..。
使用整数格式化程序 %d,它将打印 0或 1:
NSLog(@"%d", myBool);
将这个内联函数添加到 .h文件:
.h
static inline NSString* NSStringFromBOOL(BOOL aBool) { return aBool? @"YES" : @"NO"; }
现在你可以走了。
NSLog(@"%@", NSStringFromBOOL(BOOL_VAL));
只需添加下面的函数并将 BOOL值传递给它,方法就会返回 NSString
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 }
我用它创建了一个 NSString 类别
+ (instancetype)stringWithBool:(BOOL)boolValue { return boolValue ? @"YES" : @"NO"; }
像这样使用它:
[NSString stringWithBool:boolValue];
我认为最简单的方法是:
NSLog(@" %@", @(BOOL_VAL));
@ (表情)
动态计算装箱的表达式,并根据其值返回适当的对象文本(例如,NSString 表示 const char * ,NSNumber 表示 int,等等)。