-1

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

4

6 回答 6

10

用这个 :

NSLog(@"VALUE IS : %@", (YOUR_CONDITION) ? @"YES" : @"NO");
于 2013-08-08T06:13:50.960 回答
6

%@ 用于对象。BOOL 不是对象。您应该使用 %d。

它将打印出 0 表示 FALSE/NO 和 1 表示 TRUE/YES。

NSlog(@"%d",yourBool)

另一种做法。

NSLog(flag ? @"Yes" : @"No");

斯威夫特,你可以这样做

print("Is check = \(yourBool)")
于 2013-08-08T06:10:36.380 回答
1

尝试这个

BOOL flag = 1; //your bool value 
NSLog(@"%@", StringFromBoolean(flag));

这将打印 YES。如果 bool 为 0,则日志将为 NO。将它放在 .pch 文件中,以便您可以在应用程序中的任何地方使用它。

  #define StringFromBoolean (return value ? @"YES" : @"NO") 
于 2013-08-08T06:24:27.353 回答
1

如果我只想要一个 0/​​1,我通常使用 %i,或者NSLog(@"%@",(b?@"YES:@"NO"));如果我希望它打印 YES/NO,我将使用它。

于 2013-08-08T06:12:55.253 回答
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的回答

于 2013-08-08T06:15:14.947 回答
-1

@Adam:我找到了一种获取 BOOL 变量输出的方法。因为它需要一位作为输入/输出。您可以使用以下代码。

BOOL flag=TRUE;
NSLog(@" %s", flag ? "true" : "false");

这将返回 true,因为 flag 设置为 true,反之亦然。

你可以在这里得到更简短的解释

于 2013-08-08T06:20:48.333 回答