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 に答える