2010-08-12 8 views
8

Ho bisogno di costruire un array usando qualcosa di simile al seguente:CLLocationCoordinate2D senza sapere quanti saranno nell'array?

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

Il problema è che, non saprò mai come molti elementi stanno per essere nella matrice, quindi posso specificare il conteggio. C'è un modo per creare un array CLLocationCoordinate2D, e basta inserire nuove coordinate senza sapere quale sarà il totale finale?

MODIFICA: Il mio obiettivo finale è utilizzare le coordinate per creare un MKPolyline, utilizzando il metodo polylineWithCoordinates che richiede un array CLLocationCoordinate2D.

risposta

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

non dimenticare di aggiungere # include in quel file .m E, la funzione è sizeof (...) non size_of (...) ... solo che tu salvato 15 minuti. : D Altrimenti funzionava alla grande! – horseshoe7

+0

Cosa succede in questo caso: CLLocationCoordinate2D * punti = malloc ([numero di bit mutable] * sizeof (CLLocationCoordinate2D)); Sarebbe bello se qualcuno potesse indicarlo. Non stiamo creando un array C, vero? – onigunn

+1

Stiamo effettivamente creando un array C. Vedere la documentazione per polylineWithCoordinates: count :. –

1

Inserirli in un oggetto NSValue e inserirli in un NSMutableArray.

+0

Ma sto cercando di creare un MKPolyline da questo utilizzando il metodo polylineWithCoordinates. –

+0

Dovrai decomprimerli dal tuo NSMutableArray poi in memoria con un po 'di matematica dei puntatori. –

Problemi correlati