Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Comparing NSNumbers in Objective C

I am a beginner at Objective-C and I am a bit confused at this scenario. I have the following code:

if (number1 < number2) {     NSLog(@"THE FOLLOWING NUMBER ");     NSLog(@"%@", number1);     NSLog(@"IS LESS THAN");     NSLog(@"%@", number2); } 

When I run this code I see really strange results like this:

2011-07-06 20:38:18.044 helloworld[1014:207] THE FOLLOWING NUMBER  2011-07-06 20:38:18.047 helloworld[1014:207] 190.8776 2011-07-06 20:38:18.050 helloworld[1014:207] IS LESS THAN 2011-07-06 20:38:18.053 helloworld[1014:207] 96.75866 

Both numbers are NSNumber objects, how could something like this happen? I am getting the two numbers by finding distances between sprites on the screen.

Any clues or advice would really be appreciated

like image 553
Doug Molineux Avatar asked Jul 07 '11 02:07

Doug Molineux


1 Answers

I assume number1 and number2 are pointers to objects. The < sign is comparing the pointers.

You need to compare the actual floatValue or doubleValue

if ([number1 doubleValue] < [number2 doubleValue])  

....

like image 68
Kal Avatar answered Oct 09 '22 10:10

Kal