带有CGPoint数据的NSLog


93

我有一个CGPoint被称为触摸点:

UITouch *touch = [touches anyObject];

CGPoint point = [touch locationInView:self];

我想将x坐标值输入到我的控制台日志中:

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

当我使用它时,此的日志输出是:

x :(空)

我已经验证了使用调试器和变量监视程序调用时,该点不为null。

任何帮助表示赞赏,

谢谢 // :)

Answers:


259

实际上,记录a的最简单方法CGPoint是:

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

台式机的Cocoa等效于NSStringFromPoint()


这样更好。第一个答案是最简单,最轻便的方式。但是,这使我从CGPoint中获得了x和y的集合。尼斯:)很棒的工具:)
Spanky

由于StackOverflow可以在我的RSS Feed中重新提出这个问题,因此,我不妨提出我的一般解决方案:jens.ayton.se/blag/almost-elegant-cave-man-debugging,它使您可以JA_DUMP(point);获取“ point = { 43,96}”记录而不必担心格式代码。
詹斯·艾顿

由于它在I386上而不在ARM上编译,我该如何使用您的lib?我的意思是,如何使用它来处理iOS项目?
Dan Rosenstark 2010年

首先,您需要将FindAlignment.c文件构建为iOS应用并在设备(而非模拟器)上运行。然后,将结果复制到JAValueToString.m中第172行的#else之前的新#elif块中。如果这不起作用,则将需要其他调试。由于我不在iOS程序中,因此无法执行此操作。
詹斯·艾顿

3
还值得注意的是,NSStringFromCGRect()也存在。
djskinner


9

记录CGPoint值的最简单方法是使用NSValue类,因为它将为您提供所有格式良好的控制台相关值。就像这样完成:

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

您也可以在尝试登录时使用+valueWithCGRect+valueWithCGSize方法NSValue,例如,记录a的frameCGRect)或sizeCGSize)属性UIView



0

point.x 是一个浮点数,因此您应该这样编写:

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

如果您想使用String值,则意味着您只需使用它!

4
您正在格式字符串中执行不必要的格式字符串。Philippe和Ahruman的方法要简单得多,并且可以达到完全相同的结果。
布拉德·拉尔森

0

用 :

NSLog(@“%@”,NSStringFromCGPoint(point));

您还可以将NSString用于以下信息:

NSStringFromCGPoint
NSStringFromCGSize
NSStringFromCGRect
NSStringFromCGAffineTransform
NSStringFromUIEdgeInsets

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.