我想做这样的事情:
NSLog(@"You got: %x", booleanValue);
其中x是说明符。但我找不到一个!我想避免:
if (booleanValue) {
NSLog(@"You got: YES");
}
else {
NSLog(@"You got: NO");
}
有什么想法吗?文档没有布尔说明符。 %@
也无效。
答案 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 文字 - 而不是字符串。