Register FAQ / Rules Forum Spy Search Today's Posts Mark Forums Read
Go Back   MacRumors Forums > Apple Systems and Services > Programming > Mac Programming

Reply
 
Thread Tools Search this Thread Display Modes
Old Jan 29, 2009, 05:58 PM   #1
jardeon
macrumors newbie
 
Join Date: Jul 2007
Displaying Boolean values

Hi everyone,

I've been noodling around a bit in Objective-C and Xcode, and I've run into some trouble in trying to log output using NSLog.



Code:
BOOL yesFlag = YES;
BOOL noFlag = NO;
NSLog(@"This string should end with NO: %@", noFlag);
NSLog(@"This string should end with YES:  %@", yesFlag);
I get the following:
Code:
2009-01-29 18:55:08.707 PrintingBooleans[26312:10b] This string should end with NO: (null)
then a crash, then the following error: Program received signal: "EXC_BAD_ACCESS".

If I change the code so that the string interpolation is using decimals instead, like so:
Code:
BOOL yesFlag = YES;
BOOL noFlag = NO;
NSLog(@"This string should end with NO: %d", noFlag);
NSLog(@"This string should end with YES:  %d", yesFlag);
I get the following.

Code:
2009-01-29 18:57:00.065 PrintingBooleans[26331:10b] This string should end with NO: 0
2009-01-29 18:57:00.093 PrintingBooleans[26331:10b] This string should end with YES:  1
What's the proper Obj-C/XCode way to get this output:

Code:
2009-01-29 18:57:00.065 PrintingBooleans[26331:10b] This string should end with NO: NO
2009-01-29 18:57:00.093 PrintingBooleans[26331:10b] This string should end with YES:  YES
Thanks!
jardeon is offline   0 Reply With Quote
Old Jan 29, 2009, 06:06 PM   #2
lee1210
macrumors 68040
 
lee1210's Avatar
 
Join Date: Jan 2005
Location: Dallas, TX
BOOL is not an object, it is typedef'd to a primitive (can't remember which, not at a mac) with YES and NO defined as macros... 1 and 0 accordingly.

So you can do a few things... i think this is somewhat elegant:
Code:
BOOL yesFlag = YES;
BOOL noFlag = NO;
NSLog(@"This string should end with NO: %@", noFlag?@"YES":@"NO");
NSLog(@"This string should end with YES:  %@", yesFlag?@"YES":@"NO");
You could certainly write a function or macro that returns an NSString with the appropriate value when passed a BOOL as well.

You are passing a primitive to NSLog and telling NSLog it is an Object with %@. You could also just print with %d as you saw, since BOOL is some sort of number, but you will just get 0 or 1, not a word as your output shows.

-Lee
lee1210 is offline   0 Reply With Quote
Old Jan 29, 2009, 06:15 PM   #3
jardeon
Thread Starter
macrumors newbie
 
Join Date: Jul 2007
Thanks Lee!

The ternary operation was exactly what I was looking for, that worked like a charm.

- Jared
jardeon is offline   0 Reply With Quote

Reply
MacRumors Forums > Apple Systems and Services > Programming > Mac Programming

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Similar Threads
thread Thread Starter Forum Replies Last Post
Resale values. Southernboyj MacBook Pro 24 Oct 3, 2013 03:05 PM
Method return values childoftheko4n iPhone/iPad Programming 8 Jul 11, 2013 07:55 AM
Motion Ninja --- Kinect liked fruit cut (by Game Boolean) video update luckbird iPad Apps 0 Nov 5, 2012 01:55 AM
Motion Ninja --- Kinect liked fruit cut (by Game Boolean) video update luckbird iPhone and iPod touch Apps 0 Nov 5, 2012 01:54 AM
Repeating a method until a Boolean is changed. gwelmarten iPhone/iPad Programming 5 Aug 15, 2012 02:00 PM

Forum Jump

All times are GMT -5. The time now is 10:20 PM.

Mac Rumors | Mac | iPhone | iPhone Game Reviews | iPhone Apps

Mobile Version | Fixed | Fluid | Fluid HD
Copyright 2002-2013, MacRumors.com, LLC