多くの 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];