如何使用NSLog打印出BOOL?

时间:2013-08-08 06:08:22

标签: ios objective-c

我正在使用NSLog打印一些调试信息。对于BOOL,我可以使用%d,但我想知道这是否是标准方式?

6 个答案:

答案 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

获得更多简短说明