我正在使用NSLog打印一些调试信息。对于BOOL,我可以使用%d,但我想知道这是否是标准方式?
答案 0 :(得分:10)
使用此:
NSLog(@"VALUE IS : %@", (YOUR_CONDITION) ? @"YES" : @"NO");
答案 1 :(得分:5)
%@用于对象。 BOOL不是一个对象。你应该使用%d。
它将打印0表示FALSE / NO,1表示TRUE / YES。
NSlog(@"%d",yourBool)
另一种方法。
NSLog(flag ? @"Yes" : @"No");
斯威夫特,你可以这样做
print("Is check = \(yourBool)")
答案 2 :(得分:1)
如果我只想要0/1,我通常会使用%i,或者如果我想要打印是/否,我会使用NSLog(@"%@",(b?@"YES:@"NO"));
。
答案 3 :(得分:1)
试试这个
BOOL flag = 1; //your bool value
NSLog(@"%@", StringFromBoolean(flag));
这将打印YES。如果bool为0,则日志为NO。将它放在.pch文件中,以便您可以在应用程序内的任何位置使用它。
#define StringFromBoolean (return value ? @"YES" : @"NO")
答案 4 :(得分:0)
来自objc.h
中的定义:
typedef signed char BOOL;
// BOOL is explicitly signed so @encode(BOOL) == "c" rather than "C"
// even if -funsigned-char is used.
#define OBJC_BOOL_DEFINED
#define YES (BOOL)1
#define NO (BOOL)0
所以BOOL
是签名字符,您可以%d
打印它的值。
如果要打印为true和false,则必须检查BOOL
值。请参阅 FaJitendra Deore
的回答
答案 5 :(得分:-1)
@Adam:我找到了获得BOOL varibale输出的方法。因为它需要一位作为输入/输出。您可以使用以下代码。
BOOL flag=TRUE;
NSLog(@" %s", flag ? "true" : "false");
这将返回true,因为flag设置为true,反之亦然。
您可以在source
获得更多简短说明