无法使用NSCoding对MKPolyline或MKPolygon进行编码

时间:2016-11-09 10:37:02

标签: ios objective-c nscoding

我正在尝试在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;

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

1 个答案:

答案 0 :(得分:1)

虽然您可以为MKPolyline实现NSCoding,但您可以创建一个NSData表示并将其存储在NSUserDefaults中,这可以在NSUserDefaults中以键值形式存储。

如果您有一行或多个数组,则构造一个数组,并使用相应的键/值将它们绑定,使它们形成字典。其中包含每个点的x和y值,并将其存储在NSUserDefaults中。

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