是否有一个使用布尔值的格式说明符?

时间:2011-07-19 18:18:56

标签: iphone ios string format-specifiers

我想做这样的事情:

NSLog(@"You got: %x", booleanValue);

其中x是说明符。但我找不到一个!我想避免:

if (booleanValue) {
    NSLog(@"You got: YES");
}
else {
    NSLog(@"You got: NO");
}

有什么想法吗?文档没有布尔说明符。 %@也无效。

6 个答案:

答案 0 :(得分:32)

以下两件事情有效:

NSLog(@"You got: %@",booleanValue ? @"YES" : @"NO");

或者你可以施放:

NSLog(@"You got: %d", (int)booleanValue);

将输出0或1

答案 1 :(得分:7)

您可以将其强制转换为int并使用%d

NSLog(@"You got: %d", (int)booleanValue);

或者使用这样的东西:

NSLog(@"You got: %@", booleanValue ? @"YES" : @"NO");

答案 2 :(得分:3)

我所知道的没有格式说明符。你可以这样做:

NSLog(@"You got: %@", (booleanValue ? @"YES" : @"NO"));

或者,您可以使用上面的逻辑编写一个小函数或宏来获取BOOL并返回相应的字符串。然后,您可以在日志语句中使用该函数。

答案 3 :(得分:0)

以下是代码:

NSLog(@"%hhd",BOOLvariable);

打印1表示是,0表示否。为我工作。

答案 4 :(得分:0)

Swift上,使用String(describing: booleanValue)

例如:os_log("You got %@", log: .default, type: .debug, String(describing: booleanValue))

答案 5 :(得分:0)

当然你可以使用直接的布尔格式说明符 %x

BOOL flag = YES;
NSLog(@"You got: %x", flag);

但至少,你总是可以依赖 NSNumber 对象,它“记住”它们“装箱”的数据的“类型”,所以这个 NSLog 也能正常工作:

NSLog(@"You got %@", flag? @YES : @NO);

注意使用 NSNumber 文字 - 而不是字符串。