2010-08-12 25 views
8

J'ai besoin de construire un tableau en utilisant quelque chose comme ce qui suit:CLLocationCoordinate2D sans savoir combien seront dans le tableau?

CLLocationCoordinate2D points[4]; 


    points[0] = CLLocationCoordinate2DMake(41.000512, -109.050116); 

    points[1] = CLLocationCoordinate2DMake(41.002371, -102.052066); 

    points[2] = CLLocationCoordinate2DMake(36.993076, -102.041981); 

    points[3] = CLLocationCoordinate2DMake(36.99892, -109.045267); 

Le problème est, je ne saurai jamais combien d'éléments vont être dans le tableau, je peux donc préciser le nombre. Existe-t-il un moyen de créer un tableau CLLocationCoordinate2D, et d'insérer de nouvelles coordonnées sans savoir quel sera le total final?

EDIT: Mon but final est d'utiliser les coordonnées pour créer un MKPolyline, en utilisant la méthode polylineWithCoordinates qui nécessite un tableau CLLocationCoordinate2D.

Répondre

15
// unpacking an array of NSValues into memory 
CLLocationCoordinate2D *points = malloc([mutablePoints count] * sizeof(CLLocationCoordinate2D)); 
for(int i = 0; i < [mutablePoints count]; i++) { 
    [[mutablePoints objectAtIndex:i] getValue:(points + i)]; 
} 

MKPolyline *myPolyline = [MKPolyline polylineWithCoordinates:points count:[mutablePoints count]]; 
free(points); 
+0

n'oubliez pas d'ajouter #include dans ce fichier .m AND, la fonction est sizeof (...) pas size_of (...) ... vous a juste sauvé 15 minutes. : D Autrement travaillé super! – horseshoe7

+0

Ce qui se passe réellement ici: CLLocationCoordinate2D * points = malloc ([nombre mutablePoints] * sizeof (CLLocationCoordinate2D)); Ce serait génial si quelqu'un pouvait le signaler. Nous ne créons pas un tableau C, n'est-ce pas? – onigunn

+1

Nous créons en effet un tableau C. Voir la documentation de polylineWithCoordinates: count :. –

1

Insérez-les dans un objet NSValue et lancez-les dans un NSMutableArray.

+0

Mais j'essaye de créer une MKPolyline à partir de ceci en utilisant la méthode polylineWithCoordinates. –

+0

Vous devrez les déballer de votre NSMutableArray puis en mémoire avec des maths de pointeur. –