2010-08-12 8 views
8

Ich brauche ein Array mit so etwas wie die folgenden bauen:CLLocationCoordinate2D ohne zu wissen, wie viele im Array sein werden?

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

Problem ist, ich werde nie wissen, wie viele Elemente im Array sein werden, so kann ich die Zählung angeben. Gibt es eine Möglichkeit, ein CLLocationCoordinate2D-Array zu erstellen und einfach neue Koordinaten einzufügen, ohne zu wissen, wie hoch der endgültige Gesamtwert sein wird?

EDIT: Mein letztes Ziel ist es, die Koordinaten zu verwenden, um eine MKPolyline zu machen, mit der PolylineWithCoordinates Methode, die ein CLLocationCoordinate2D Array benötigt.

Antwort

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

nicht vergessen, #include in dieser .m-Datei UND hinzuzufügen, die Funktion ist sizeof (...) nicht size_of (...) ... nur 15 Minuten gespeichert. : D Ansonsten hat super geklappt! – horseshoe7

+0

Was passiert hier eigentlich: CLLocationCoordinate2D * Punkte = malloc ([muablePoints count] * sizeof (CLLocationCoordinate2D)); Wäre toll, wenn jemand darauf hinweisen könnte. Wir erstellen kein C-Array, nicht wahr? – onigunn

+1

Wir erstellen tatsächlich ein C-Array. Siehe die Dokumentation für polylineWithCoordinates: count :. –

1

Verpacken Sie sie in einem NSValue Objekt und werfen Sie sie in eine NSMutableArray.

+0

Aber ich versuche, eine MKPolyline daraus mit der PolylineWithCoordinates Methode zu erstellen. –

+0

Sie müssen sie aus Ihrem NSMutableArray dann in den Speicher mit etwas Zeigermathematik entpacken. –