1

私はiOS開発にかなり慣れていません。

カスタムクラスのオブジェクトであるプロパティを含むviewControllerがあります。そのカスタムクラスをClassAと呼びます。ClassAのオブジェクトには、ClassBと呼ぶ別のカスタムクラスのオブジェクトのNSMutableArrayであるプロパティがあります。ClassBには、CLLocationタイプのオブジェクトのNSMutableArrayでもあるプロパティがあります。

viewControllerのメソッド内から、CLLocationCoordinate2D構造体のC配列を作成する必要があります(CLLocationCoordinate2DはCLLocationのプロパティです)。これらの各CLLocationCoordinate2Dは、ClassBおよびClassAのすべてのオブジェクトによって保持されているすべてのCLLocationオブジェクトから取得する必要があります。私が何を作ったかを理解していれば、私は3D配列を持っていると思います。

私は、この構造体の配列を組み立てる方法に固執しています。配列が1つだけの場合は、次のようにします。

NSUInteger numberOfSteps = [objectOfClassX count];    
CLLocationCoordinate2D coordinates[numberOfSteps];

for (NSInteger index = 0; index < numberOfSteps; index++) {
    CLLocation *location = [objectOfClassX objectAtIndex:index];
    CLLocationCoordinate2D coordinate = location.coordinate;

    coordinates[index] = coordinate;
}

ただし、最初の配列の各オブジェクトを取得し、次に2番目の配列の各オブジェクトの内部を取得し、次にそのCLLocationCoordinate2Dの内部を取得する構文に苦労しています。

4

2 に答える 2

2

座標の総数を取得するために1回繰り返してから、新しく割り当てられた配列にそれらをコピーするためにもう一度繰り返します。

NSInteger coordCount = 0, coordIndex = 0;
for(ClassA *a in collectionOfA)
    for(ClassB *b in a.collectionOfB)
        coordCount += [b.locations count];

CLLocationCoordinate2D coords[coordCount];

for(ClassA *a in collectionOfA)
  for(ClassB *b in a.collectionOfB)
    for(CLLocation *location in b.locations)
        coords[coordIndex++] = location.coordinate;
于 2012-07-27T03:23:20.147 に答える
-1

試してみてください:coordinates = [NSMutableArray arrayWithArray: objectOfClassX];

于 2012-07-27T03:19:25.157 に答える