objective-c - 保存 MKOverlayView 数组 -> plist

标签 objective-c ios nsarray plist mkoverlay

我有一个涉及大量 MKOverlayView 的应用程序。每次将一个添加到 map 时,它也会添加到一个 NSArray 中。当用户希望停止添加覆盖时,我希望他们能够保存它们,并在以后能够访问它们。如何将 MKOverlayViews 数组存储到 plist 中,然后稍后将它们重新加载回 mapView 中?这可能吗?

我正在尝试使用此代码从数组中获取 MKPolylineViews 并将相应的 MKPolylines 添加到 map ,但它在“[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];

最佳答案

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

关于objective-c - 保存 MKOverlayView 数组 -> plist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7668631/

相关文章:

ios - 叠加场景/区域

ios - 无法在 Whatsapp 上分享文字

iphone - 如何从 UITextFields 创建数组对象?

objective-c - 根据另一个 NSArray 字符串的排序对自定义对象的 NSArray 进行排序

objective-c - 在邮件 ViewController 中禁用横向模式

objective-c - 绑定(bind)到 block 的 Objective C 间接指针无法更新直接指针

iphone - 在不同的 UIViewController 中调用单个 View

javascript - 如何在iOS中绘制特殊折线条形图(引用我的图)

ios - UITableViewController 模糊背景不显示滚动

ios - 从 NSDictionary 对象的 NSArray,如何获得 uniques 的 NSArray