views:

1454

answers:

4

I have a CGPoint called point that is being assigned a touch:

UITouch *touch = [touches anyObject];

CGPoint point = [touch locationInView:self];

I want to get the x coordinate value into my console log:

NSLog(@"x: %s", point.x);

When I use this, log output for this is:

x: (null)

I have verified that point is not null when this is called using the debugger and variable watch.

Any help appreciated,

Thanks // :)

+8  A: 

point.x is a floating point number, so you should use:

NSLog(@"x: %f", point.x);
Philippe Leybaert
Thank you mr anonymous downvoter. What's not correct about this answer? The question was: *I want to get the x coordinate value into my console log*
Philippe Leybaert
Awesome, that works! Thanks :)
Spanky
+4  A: 

The simplest way to log a CGPoint value is to use the NSValue class, since it will give you all the relevant values formatted nicely for the console. It's done like so:

NSLog(@"myPoint = %@", [NSValue valueWithCGPoint:myPoint]);

You can also use the +valueWithCGRect and +valueWithCGSize methods of NSValue when you're trying to log, say, the frame (CGRect) or size (CGSize) properties of a UIView.

Nathan de Vries
Great answer! Thanks :)
Spanky
+18  A: 

Actually, the real easiest way to log a CGPoint is:

NSLog(@"%@", NSStringFromCGPoint(point));

The desktop Cocoa equivalent is NSStringFromPoint().

Ahruman
This is even better. The first answer is the easiest and lightest weight way. But this gets me both x and y from the CGPoint in one set. Nice :) Great tool :)
Spanky
Since StackOverflow saw fit to reintroduce this question in my RSS feed, I may as well pimp my general solution: http://jens.ayton.se/blag/almost-elegant-cave-man-debugging/ which allows you to go `JA_DUMP(point);` and get “point = { 43, 96 }” logged without having to worry about format codes.
Ahruman
A: 

point.x is a floating point number, so you should use:

NSLog(@"%@",[NSString StringWithFormat:@"%f",point.x]);

.... or `NSLog(@"%f", point.x)`
Dave DeLong
If u want to String value means u just use this!!
You're doing an unnecessary format string within a format string. Philippe's and Ahruman's approaches are much simpler and they achieve the exact same results.
Brad Larson