2
我有一个涉及大量MKOverlayViews的应用程序。每次将其添加到地图中时,它都会添加到NSArray中。当用户希望停止添加叠加层时,我希望他们能够保存它们,并能够稍后访问它们。如何将MKOverlayViews数组存储到plist中,然后将它们重新加载到mapView中?这可能吗?保存MKOverlayView数组 - > plist
我尝试使用此代码从数组采取MKPolylineViews和相应MKPolylines添加到地图,但它崩溃在“[MapView的addOverlay ....”线。
写作阵列的plist:从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];
我试过了,但我遇到了一些问题。我必须将地图上的MKPolylines更改为MKPolylineViews,以便它们符合NSCoding。一旦我将它们解码,我就很难将它们改回MKPolylines,我可以把它放在地图上。虽然我访问每个MKPolylineView的polyline属性,但编译器告诉我它是零,并且我的程序崩溃了。不知道为什么会发生。 –
你有代码示例吗?我仍然认为我的建议方法是合理的,它可能只是尝试使用一些不同的变换器来正确归档和检索您的MKPolylines ... – isaac
请参阅我的编辑请 –