BOOL到NSString

时间:2009-04-10 18:56:31

标签: objective-c nsstring boolean

如果我有一个返回BOOL的方法,如何将其转换为NSString,以便我可以在控制台中将其打印出来?

例如,我尝试这样做,这是行不通的:

NSLog(@"Is Kind of NSString:", ([thing isKindOfClass:[NSString class]]) ? @"YES" : @"NO");

但我真的想将返回值转换为NSString。我知道它是一种原始数据类型,所以我不能在它上面调用方法。我是否必须单独创建一个字符串,然后在NSString的方法中使用Bool作为参数?

8 个答案:

答案 0 :(得分:65)

使用ternary operator

BOOl isKind= [thing isKindOfClass:[NSString class]];

NSLog(@"Is Kind of NSString: %d", isKind);
NSLog(@"Is Kind of NSString: %@", isKind ? @"YES" : @"NO");

答案 1 :(得分:63)

您需要格式字符串中的格式说明符:

NSLog(@"Is Kind of NSString: %@", ([thing isKindOfClass:[NSString class]]) ? @"YES" : @"NO");

答案 2 :(得分:33)

在后台BOOL的行为类似于int类型,因此您可以使用%i在NSLog中测试BOOL类型的值:

BOOL a = YES;
BOOL b = NO;
NSLog(@"a is %i and b is %i", a, b);

// Output: a is 1 and b is 0

答案 3 :(得分:22)

所以,我知道这真的很老了,但我想我不妨将我的解决方案扔进戒指。我这样做:

#define NSStringFromBOOL(aBOOL)    ((aBOOL) ? @"YES" : @"NO")
NSLog(@"Is Kind of NSString: %@", NSStringFromBOOL([thing isKindOfClass: [NSString class]]);

我觉得这更符合Apple的一些to-string宏(NSStringFromClassNSStringFromRectNSStringFromSelector等等,并且通常非常简单易用-the飞。只要确保将宏放在全球可访问或经常导入的地方!

答案 4 :(得分:13)

你打印一个像这样的BOOL:

NSLog(@"The BOOL value is %s", theBoolValue ? "YES" : "NO");

或者,使用新的@表示法,可以执行以下操作:

NSLog(@"The BOOL value is %@", @(theBoolValue));

答案 5 :(得分:3)

NSLog使用简单的printf样式调用格式,并且您的代码示例缺少嵌入对象所需的字符序列。

这应该有效:

NSLog(@"Is Kind of NSString: %@", ([thing isKindOfClass:[NSString class]]) ? @"YES" : @"NO");

答案 6 :(得分:0)

首先,您应该添加格式说明符%@。 它应该是这样的:

NSLog(@"Is Kind of NSString: %@", ([thing isKindOfClass:[NSString class]]) ? @"YES" : @"NO");

此外,您可以使用extern函数提取从BOOLNSString的转换,就像Apple对NSStringFromCGRectNSStringFromClass等所做的那样。

创建utils文件或将以下代码添加到现有文件头中:

//NSString+TypeConversion.h

extern NSString *NSStringFromBOOL(BOOL aBool);

并将以下代码添加到实现中:

//NSString+TypeConversion.m

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

所以现在你可以在其他地方使用这个功能,你的代码变得更加清晰和可重用:

#import "NSString+TypesConversion.h"

NSLog(@"Is Kind of NSString: %@", NSStringFromBOOL([thing isKindOfClass:[NSString class]]));

答案 7 :(得分:-1)

这对我有用:

NSLog(@"The BOOL value is %@", theBoolValue ? "YES" : "NO");