我正在尝试在NSUserDefaults中保存我的MKPolyline和MKPolygon视图。我已经实现了一个模型:

-(id)initWithCoder:(NSCoder *)aDecoder
- (void)encodeWithCoder:(NSCoder *)aCoder


但是,每当我尝试对MKPolyLine进行编码时,都会出现错误:

-[MKPolyline encodeWithCoder:]: unrecognized selector sent to instance


我设置了所有异常断点,它在这一行停止:

[aCoder encodeObject:self.layerData forKey:@"layer"];


layerData的属性为:

@property (strong, nonatomic) MKPolyline *layerData;


为什么会发生这种情况的任何想法?

最佳答案

虽然可以为MKPolyline实现NSCoding,但是可以制作NSData表示形式并将其存储在NSUserDefaults中,该形式可以键值形式存储在NSUserDefaults中。

如果您有一个单行或多个数组,请构造一个数组,然后将它们与各自的键/值绑定,使它们构成字典。其中每个点都有x和y值,并将其存储在NSUserDefaults中。

加载默认值时,获取数组,如果有多个MKPolyline,则在单行和字典的情况下循环遍历单个数组。然后用这些点重新创建MKPolyline。

关于ios - 无法使用NSCoding编码MKPolyline或MKPolygon,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40504918/

10-13 05:42