Objective-C formatting string for boolean?
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, BOOL
s 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];
精彩评论