我有一个涉及大量 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];
}
从 plist 读取数据:
NSData *data = [[NSUserDefaults standardUserDefaults] objectForKey:@"theKey"];
NSArray *arr = [NSKeyedUnarchiver unarchiveObjectWithData:data];
for(MKPolylineView* a in arr)
[mapView addOverlay:a.polyline];