3 Stimmen

Speichern des MKOverlayView-Arrays -> plist

Ich habe eine Anwendung, die viele MKOverlayViews enthält. Jedes Mal, wenn eine zur Karte hinzugefügt wird, wird sie auch zu einem NSArray hinzugefügt. Wenn der Benutzer aufhören möchte, Overlays hinzuzufügen, möchte ich, dass er sie speichern kann und später darauf zugreifen kann. Wie kann ich ein Array von MKOverlayViews in einer plist speichern und sie später wieder in eine mapView laden? Ist dies möglich?

Ich bin Der Versuch diesen Code zu verwenden, um die MKPolylineViews aus dem Array zu nehmen und die entsprechenden MKPolylines zur Karte hinzuzufügen, aber es stürzt bei der Zeile '[mapView addOverlay....' ab.

Array in plist schreiben:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if(overlays)
{
    NSData *data = [NSKeyedArchiver archivedDataWithRootObject:overlays];
    [defaults setObject:data forKey:@"theKey"];
    [defaults synchronize];
}

Lesen von Daten aus plist:

NSData *data = [[NSUserDefaults standardUserDefaults] objectForKey:@"theKey"];
NSArray *arr = [NSKeyedUnarchiver unarchiveObjectWithData:data];

for(MKPolylineView* a in arr)
    [mapView addOverlay:a.polyline];

1voto

isaac Punkte 4857

Ich würde versuchen, die Daten mit NSArchiver oder NSKeyedArchiver zu archivieren und sie dann auf die Festplatte zu schreiben. Wahrscheinlich besser als zu versuchen, sie irgendwie in eine Plist zu quetschen...

0 Stimmen

Das habe ich versucht, aber ich bin auf einige Probleme gestoßen. Ich muss die MKPolylines auf der Karte in MKPolylineViews ändern, damit sie NSCoding-konform sind. Sobald ich sie dekodiert habe, habe ich Schwierigkeiten, sie wieder in MKPolylines umzuwandeln, die ich in die Karte einfügen kann. Obwohl ich auf die Polyline-Eigenschaft der einzelnen MKPolylineViews zugreife, meldet der Compiler, dass sie gleich Null ist, und mein Programm stürzt ab. Ich bin mir nicht sicher, warum das passiert.

0 Stimmen

Haben Sie ein Codebeispiel? Ich denke immer noch, dass der von mir vorgeschlagene Ansatz vernünftig ist. Vielleicht müssen Sie nur ein paar verschiedene Transformatoren ausprobieren, um Ihre MKPolylines richtig zu archivieren und abzurufen...

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X