1

我对 iOS 开发相当陌生。

我有一个 viewController 包含一个属性,该属性是自定义类的对象。我们将该自定义类称为 ClassA。ClassA 的对象有一个属性,它是另一个自定义类的对象的 NSMutableArray,我们将称之为 ClassB。ClassB 有一个属性,它也是 CLLocation 类型的对象的 NSMutableArray。

从 viewController 的一个方法内部,我需要创建一个 CLLocationCoordinate2D 结构的 C 数组(CLLocationCoordinate2D 是 CLLocation 的一个属性)。这些 CLLocationCoordinate2D 中的每一个都需要来自 ClassB 和 ClassA 中的所有对象所拥有的所有 CLLocation 对象。如果我理解我所做的,我相信我有一个 3-D 数组。

我被困在如何组装这个结构数组上。如果它只是一个数组,我会做这样的事情:

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;
}

但是,我正在努力获取第一个数组中的每个对象,然后是第二个数组中的每个对象,然后是 CLLocationCoordinate2D 中的语法。

4

2 回答 2

2

迭代一次以获得坐标的总数,然后再次迭代以将它们复制到新分配的数组中。

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 回答