开发者

Objective-C formatting string for boolean?

开发者 https://www.devze.com 2022-12-25 23:05 出处:网络
What formatter is used for boolean values? EDIT: 开发者_JAVA技巧Example: NSLog(@\" ??\", BOOL_VAL);, what is ?? ?One way to do it is to convert to strings (since there are only two possibilities, i

What formatter is used for boolean values?

EDIT:

开发者_JAVA技巧Example: NSLog(@" ??", BOOL_VAL);, what is ?? ?


One way to do it is to convert to strings (since there are only two possibilities, it isn't hard):

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

I don't think there is a format specifier for boolean values.


I would recommend

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

because, um, BOOLs are called YES or NO in Objective-C.


Use the integer formatter %d, which will print either 0 or 1:

NSLog(@"%d", myBool);


In Objective-C, the BOOL type is just a signed char. From <objc/objc.h>:

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

So you can print them using the %d formatter But that will only print a 1 or a 0, not YES or NO.

Or you can just use a string, as suggested in other answers.


Add this inline function to your .h file:

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

Now you are ready to go...

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


Format strings for use with NSLog and [NSString stringWithFormat] are documented here:

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

BOOL/bool/boolean are not even mentioned...


I believe the easiest way to do this is:

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

@(expression)

Dynamically evaluates the boxed expression and returns the appropriate object literal based on its value (i.e. NSString for const char*, NSNumber for int, etc.).


Just add the below function and pass it the BOOL value and method will return back the 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
}


I created a category of NSString with this

+ (instancetype)stringWithBool:(BOOL)boolValue {
return boolValue ? @"YES" : @"NO";
}

And use it like this:

[NSString stringWithBool:boolValue];
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号