我正在尝试从NSArray创建一个CGPoint数组,每个条目都是NSPoint
NSArray *points = [_terrain getPathPoints];
CCLOG(@"Terrain Points=%@",points);
日志输出:
Terrain Points=(
"NSPoint: {-3.4324746, 70.220947}",
"NSPoint: {-3.9852712, 70.136444}",
"NSPoint: {-4.3119373, 70.058411}",
"NSPoint: {-4.4321384, 69.986282}",
"NSPoint: {-4.3655362, 69.919479}",
"NSPoint: {-4.131794, 69.857513}",
"NSPoint: {-3.7505748, 69.799774}"
)
getPathPoints是我正在使用的第三方工具的方法。此方法返回NSPoint数组。如何从上述数据创建CGPoint数组?
答案 0 :(得分:2)
您所看到的内容最有可能是NSValue
个CGPoint
结构创建的对象(您无法将CGPoint
或NSPoint
直接放入NSArray
) 。他们记录为NSPoint
的事实可能有点令人困惑(来自Mac的遗迹,NSPoint
与CGPoint
基本相同),但您可以轻松转换这样的“盒装”使用CGPoint
方法返回CGPointValue
的值,例如
NSArray *points = [_terrain getPathPoints];
NSValue *lastPointValue = [points lastObject];
CGPoint lastPoint = [lastPointValue CGPointValue];
//...
答案 1 :(得分:1)
您是否阅读了documentation?
图形类型转化
当在Cocoa和Quartz代码之间来回切换时,可能需要对数据类型进行一些转换。表9-1显示了一些基本Quartz类型的Cocoa等价物。
Table 9-1 Simple data-type conversions Cocoa type Quartz type NSRect CGRect NSPoint CGPoint NSSize CGSize
虽然在每种情况下结构布局都相同,但是不能将Quartz数据类型直接传递给期望Cocoa类型的方法。要进行转换,必须从一种类型转换为另一种类型,如以下示例所示:
NSRect cocoaRect = *(NSRect*)&myCGRect;