带有 CGPoint 数据的 NSLog

Posted

技术标签:

【中文标题】带有 CGPoint 数据的 NSLog【英文标题】:NSLog with CGPoint data 【发布时间】:2010-12-01 09:12:01 【问题描述】:

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

UITouch *touch = [touches anyObject];

CGPoint point = [touch locationInView:self];

我想在控制台日志中获取 x 坐标值:

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

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

x: (null)

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

任何帮助表示赞赏,

谢谢 // :)

【问题讨论】:

【参考方案1】:

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

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

桌面 Cocoa 等价物是 NSStringFromPoint()

【讨论】:

这样更好。第一个答案是最简单和最轻的方法。但这让我在一组中从 CGPoint 得到 x 和 y。不错 :) 很棒的工具 :) 由于 *** 认为适合在我的 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() 也存在。【参考方案2】:

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

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

【讨论】:

【参考方案3】:

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

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

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

【讨论】:

【参考方案4】:

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

【讨论】:

【参考方案5】:

point.x 是一个浮点数 所以你应该这样编码:

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

【讨论】:

如果你想字符串值意味着你就用这个!! 您在格式字符串中执行了不必要的格式字符串。 Philippe 和 Ahruman 的方法要简单得多,而且结果完全相同。【参考方案6】:

使用:

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

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

NSStringFromCGPoint NSStringFromCGSize NSStringFromCGRect NSStringFromCGAffineTransform NSStringFromUIEdgeInsets

【讨论】:

以上是关于带有 CGPoint 数据的 NSLog的主要内容,如果未能解决你的问题,请参考以下文章

如何将CGPoint存储在核心数据中?

带有NSError的NSLog和带有managedObjectContext的NSArray

CGPoint 数组作为不同的结构

如何计算不接触 UIView 的随机 CGPoint

带有自定义数据的自定义 UIActivity

带有异步调用的空 UITableViewController