3

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

1 回答 1

1

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

于 2011-10-05T23:16:31.460 回答