ChatGPT解决这个技术问题 Extra ChatGPT

带有 CGPoint 数据的 NSLog

我有一个名为 point 的 CGPoint,它被分配了一个触摸:

UITouch *touch = [touches anyObject];

CGPoint point = [touch locationInView:self];

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

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

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

x:(空)

当使用调试器和变量 watch 调用它时,我已经验证了该点不为空。

任何帮助表示赞赏,

谢谢 // :)


J
Jens Ayton

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

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

桌面 Cocoa 等效项是 NSStringFromPoint()


这甚至更好。第一个答案是最简单和最轻的方法。但这让我在一组中从 CGPoint 得到 x 和 y。不错 :) 很棒的工具 :)
由于 StackOverflow 认为适合在我的 RSS 提要中重新引入这个问题,所以我不妨把我的一般解决方案拉到皮条上:jens.ayton.se/blag/almost-elegant-cave-man-debugging,它允许您去 JA_DUMP(point); 并记录“point = { 43, 96 }”,而不必担心格式代码。
我如何使用你的库,因为它在 I386 上编译但不在 ARM 上?我的意思是,我如何使用它来处理 iOS 项目?
首先,您需要将 FindAlignment.c 文件构建为 iOS 应用程序并在设备(而非模拟器)上运行它。然后,将结果复制到 JAValueToString.m 中第 172 行 #else 之前的新 #elif 块中。如果这不起作用,则需要进行额外的调试。我不能这样做,因为我不在 iOS 程序中。
另外值得注意的是 NSStringFromCGRect() 也存在。
P
Philippe Leybaert

point.x 是一个浮点数,所以你应该使用:

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

N
Nathan de Vries

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

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

当您尝试记录 UIViewframe (CGRect) 或 size (CGSize) 属性时,您还可以使用 NSValue+valueWithCGRect+valueWithCGSize 方法}。


N
Nicki

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


A
Arun

point.x 是一个浮点数,因此您应该编写如下代码:

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

如果你想字符串值意味着你只需使用它!
您正在格式字符串中执行不必要的格式字符串。 Philippe 和Ahruman 的方法要简单得多,并且可以达到完全相同的结果。
A
Ash

利用 :

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

您还可以使用 NSString 获取以下信息:

NSStringFromCGPoint NSStringFromCGSize NSStringFromCGRect NSStringFromCGAffineTransform NSStringFromUIEdgeInsets


E
Edward Hasted

最新语法:

NSLog("%@", NSCoder.string(for: point!))