保存MKOverlayView数组 - > plist中

时间:2011-10-05 22:45:33

标签: objective-c ios nsarray plist mkoverlay

我有一个涉及大量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];

1 个答案:

答案 0 :(得分:1)

我会查看使用NSArchiver或NSKeyedArchiver进行归档,然后将它们写入磁盘。可能比试图以某种方式将它们挤进一个plist更好......