0

各エントリが NSPoint である NSArray から CGPoint の配列を作成しようとしています

 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 の配列を作成するにはどうすればよいですか?

4

2 に答える 2

2

NSValue表示されているのは、構造体から作成されたオブジェクトである可能性が最も高いです (またはを に直接CGPoint配置することはできません)。としてログに記録するという事実は少し紛らわしいかもしれません (Mac からの痕跡は、基本的にはと同じです)。CGPointNSPointNSArrayNSPointNSPointCGPointCGPointCGPointValue

NSArray *points = [_terrain getPathPoints];
NSValue *lastPointValue = [points lastObject];
CGPoint lastPoint = [lastPointValue CGPointValue];
//...
于 2013-07-23T00:57:52.140 に答える
1

ドキュメントを読みましたか?

グラフィックス タイプの変換

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;
于 2013-07-23T00:50:49.903 に答える