Сохранение массива MKOverlayView -> plist - PullRequest
3 голосов
/ 06 октября 2011

У меня есть приложение, которое включает в себя множество MKOverlayViews. Каждый раз, когда кто-то добавляется на карту, он также добавляется в NSArray. Когда пользователь хочет прекратить добавление наложений, я бы хотел, чтобы они могли его сохранить и получить к ним доступ позже. Как я могу сохранить массив MKOverlayViews в plist, а затем перезагрузить их обратно в mapView? Возможно ли это?

Я пытаюсь использовать этот код для извлечения MKPolylineViews из массива и добавления соответствующих MKPolylines на карту, но он падает в строке '[mapView addOverlay ....'.

Запись массива в plist:

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

Чтение данных из списка:

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

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

1 Ответ

1 голос
/ 06 октября 2011

Я бы посмотрел на архивирование с помощью NSArchiver или NSKeyedArchiver и затем записал их на диск.Наверное, лучше, чем пытаться как-то сжать их в листе ...

...