布尔型的 Objective-C 格式字符串? ?

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

编辑:

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

98930 次浏览

一种方法是转换为字符串(因为只有两种可能性,所以这并不难) :

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

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

我建议

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

因为 BOOL在 Objective-C 中被称为 YES或者 NO

在 Objective-C 中,BOOL类型只是一个有符号的字符:

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

所以你可以打印他们使用 %d格式化,但这将只打印一个 10,而不是 YESNO

或者你也可以使用字符串,就像其他答案中建议的那样。

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,它将打印 01:

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,等等)。