Objective-C格式化布尔值的字符串?

时间:2010-04-08 22:11:28

标签: objective-c string nsstring string-formatting

什么格式化程序用于布尔值?

编辑:

示例:NSLog(@" ??", BOOL_VAL);,什么是??

9 个答案:

答案 0 :(得分:165)

一种方法是转换为字符串(因为只有两种可能性,并不难):

NSLog(@" %s", BOOL_VAL ? "true" : "false");

我认为布尔值没有格式说明符。

答案 1 :(得分:67)

我会推荐

NSLog(@"%@", boolValue ? @"YES" : @"NO");

因为,嗯,BOOL在Objective-C中被称为YESNO

答案 2 :(得分:48)

使用整数格式化程序%d,它将打印01

NSLog(@"%d", myBool);

答案 3 :(得分:23)

在Objective-C中,BOOL类型只是一个签名字符。来自<objc/objc.h>

typedef signed char BOOL;
#define YES         (BOOL)1
#define NO          (BOOL)0

因此,您可以使用%d格式化程序打印它们但是只打印10,而不是YESNO

或者您可以使用字符串,如其他答案所示。

答案 4 :(得分:19)

将此内联函数添加到.h文件中:

static inline NSString* NSStringFromBOOL(BOOL aBool) {
    return aBool? @"YES" : @"NO";
}

现在你准备好了......

NSLog(@"%@", NSStringFromBOOL(BOOL_VAL));

答案 5 :(得分:5)

用于NSLog和[NSString stringWithFormat]的格式字符串在此处记录:

http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html

甚至没有提到

BOOL / bool / boolean ......

答案 6 :(得分:1)

只需添加以下函数并将BOOL值传递给它,方法将返回NSString

- (NSString *)boolValueToString:(BOOL)theBool {
    if (theBool == 0)
        return @"NO"; // can change to No, NOOOOO, etc
    else
        return @"YES"; // can change to YEAH, Yes, YESSSSS etc
}

答案 7 :(得分:1)

我相信最简单的方法是:

NSLog(@" %@", @(BOOL_VAL));
  

@(表达式)

动态地计算盒装表达式并根据其值返回适当的对象文字(即,对于const char *,为NSString;对于整数,为NSNumber,等等)。

答案 8 :(得分:0)

我用这个

创建了一个NSString类别
+ (instancetype)stringWithBool:(BOOL)boolValue {
return boolValue ? @"YES" : @"NO";
}

并像这样使用它:

[NSString stringWithBool:boolValue];