我的 iOS 应用程序需要MKPolyline
在NSUserDefault
. 我一直在做很多研究,现在我知道了:
- NSUserDefaults 是 NSCoder 的子类
- MKPolyline 不是 NSCoder 的子类
因此,将折线保存到nsuserdefaults是相当困难的。我试图将 MKPolyline 转换为 NSData:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:routeLine]; // routeLine is an MKPolyline
[defaults dataForKey:@"key"];
[defaults synchronize];
当我尝试将折线转换为 NSData 时,我收到以下错误消息:
由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'-[MKPolyline encodeWithCoder:]:无法识别的选择器发送到实例 0xba1fd70
使用MKPolylineView时,我可以成功执行上述代码,但是在将 MKPolyline 从视图中移出时遇到问题。我在 SO 上找到了这个 Q/A,但它并没有解决我的问题,因为它会改变我的应用程序的运行方式。
如何保存 MKPolyline?我可以对它进行子类化吗,如果可以,那会带来什么?或者有没有办法用 MKPolylineView 做到这一点?我错过了 NSCoder 的东西吗?