用于布尔值的格式化程序是什么?
编辑:
例如:NSLog(@" ??", BOOL_VAL);
,??
是什么?
用于布尔值的格式化程序是什么?
编辑:
例如:NSLog(@" ??", BOOL_VAL);
,??
是什么?
一种方法是将其转换为字符串(因为只有两种可能性,所以并不难):
NSLog(@" %s", BOOL_VAL ? "true" : "false");
我认为布尔值没有格式说明符。
我建议
NSLog(@"%@", boolValue ? @"YES" : @"NO");
因为在Objective-C中,BOOL
类型被称为YES
或NO
。
使用整数格式化程序%d
,它将打印0
或1
:
NSLog(@"%d", myBool);
在Objective-C中,BOOL
类型只是一个有符号字符。来自<objc/objc.h>
:
typedef signed char BOOL;
#define YES (BOOL)1
#define NO (BOOL)0
你可以使用%d
格式化符号将它们打印出来。但是这只会打印1
或0
,而不是YES
或NO
。
或者,您可以像其他答案建议的那样,直接使用字符串。
将以下内联函数添加到您的.h
文件中:
static inline NSString* NSStringFromBOOL(BOOL aBool) {
return aBool? @"YES" : @"NO";
}
现在你已经准备好了...
NSLog(@"%@", NSStringFromBOOL(BOOL_VAL));
这里记录了用于NSLog和[NSString stringWithFormat]的格式化字符串:
其中却没有提到BOOL/bool/boolean...
我相信最简单的方法是:
NSLog(@" %@", @(BOOL_VAL));
@(expression)
动态评估封装的表达式并根据其值返回相应的对象文本(例如,对于const char *,返回NSString,对于int,则返回NSNumber等)。
只需添加以下函数并将其传递给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
}
我用这个创建了一个NSString类别
+ (instancetype)stringWithBool:(BOOL)boolValue {
return boolValue ? @"YES" : @"NO";
}
并像这样使用它:
[NSString stringWithBool:boolValue];