【发布时间】:2011-02-05 22:09:58
【问题描述】:
布尔值使用什么格式化程序?
编辑:
例如:NSLog(@" ??", BOOL_VAL);,?? 是什么?
【问题讨论】:
标签: objective-c string nsstring string-formatting
布尔值使用什么格式化程序?
编辑:
例如:NSLog(@" ??", BOOL_VAL);,?? 是什么?
【问题讨论】:
标签: objective-c string nsstring string-formatting
一种方法是转换为字符串(因为只有两种可能,这并不难):
NSLog(@" %s", BOOL_VAL ? "true" : "false");
我认为布尔值没有格式说明符。
【讨论】:
我会推荐
NSLog(@"%@", boolValue ? @"YES" : @"NO");
因为,嗯,BOOLs 在 Objective-C 中被称为 YES 或 NO。
【讨论】:
在 Objective-C 中,BOOL 类型只是一个有符号字符。来自<objc/objc.h>:
typedef signed char BOOL;
#define YES (BOOL)1
#define NO (BOOL)0
因此您可以使用%d 格式化程序打印它们,但这只会打印1 或0,而不是YES 或NO。
或者您可以只使用一个字符串,如其他答案中所建议的那样。
【讨论】:
这里记录了用于 NSLog 和 [NSString stringWithFormat] 的格式字符串:
BOOL/bool/boolean 甚至都没有被提及...
【讨论】:
使用整数格式化程序%d,它将打印0 或1:
NSLog(@"%d", myBool);
【讨论】:
将此内联函数添加到您的 .h 文件中:
static inline NSString* NSStringFromBOOL(BOOL aBool) {
return aBool? @"YES" : @"NO";
}
现在你准备好了……
NSLog(@"%@", NSStringFromBOOL(BOOL_VAL));
【讨论】:
只需添加以下函数并将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];
【讨论】:
我认为最简单的方法是:
NSLog(@" %@", @(BOOL_VAL));
@(表达式)
动态评估装箱表达式并根据其值返回适当的对象字面量(即 NSString 用于 const char*,NSNumber 用于 int 等)。
【讨论】: