什么格式化程序用于布尔值?
编辑:
示例:NSLog(@" ??", BOOL_VAL);
,什么是??
?
答案 0 :(得分:165)
一种方法是转换为字符串(因为只有两种可能性,并不难):
NSLog(@" %s", BOOL_VAL ? "true" : "false");
我认为布尔值没有格式说明符。
答案 1 :(得分:67)
我会推荐
NSLog(@"%@", boolValue ? @"YES" : @"NO");
因为,嗯,BOOL
在Objective-C中被称为YES
或NO
。
答案 2 :(得分:48)
使用整数格式化程序%d
,它将打印0
或1
:
NSLog(@"%d", myBool);
答案 3 :(得分:23)
在Objective-C中,BOOL
类型只是一个签名字符。来自<objc/objc.h>
:
typedef signed char BOOL;
#define YES (BOOL)1
#define NO (BOOL)0
因此,您可以使用%d
格式化程序打印它们但是只打印1
或0
,而不是YES
或NO
。
或者您可以使用字符串,如其他答案所示。
答案 4 :(得分:19)
将此内联函数添加到.h
文件中:
static inline NSString* NSStringFromBOOL(BOOL aBool) {
return aBool? @"YES" : @"NO";
}
现在你准备好了......
NSLog(@"%@", NSStringFromBOOL(BOOL_VAL));
答案 5 :(得分:5)
用于NSLog和[NSString stringWithFormat]的格式字符串在此处记录:
甚至没有提到BOOL / bool / boolean ......
答案 6 :(得分:1)
只需添加以下函数并将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
}
答案 7 :(得分:1)
我相信最简单的方法是:
NSLog(@" %@", @(BOOL_VAL));
@(表达式)
动态地计算盒装表达式并根据其值返回适当的对象文字(即,对于const char *,为NSString;对于整数,为NSNumber,等等)。
答案 8 :(得分:0)
我用这个
创建了一个NSString类别+ (instancetype)stringWithBool:(BOOL)boolValue {
return boolValue ? @"YES" : @"NO";
}
并像这样使用它:
[NSString stringWithBool:boolValue];