我有一个涉及大量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];
答案 0 :(得分:1)
我会查看使用NSArchiver或NSKeyedArchiver进行归档,然后将它们写入磁盘。可能比试图以某种方式将它们挤进一个plist更好......