我正在尝试在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;
关于为什么会发生这种情况的任何想法?
答案 0 :(得分:1)
虽然您可以为MKPolyline实现NSCoding,但您可以创建一个NSData表示并将其存储在NSUserDefaults中,这可以在NSUserDefaults中以键值形式存储。
如果您有一行或多个数组,则构造一个数组,并使用相应的键/值将它们绑定,使它们形成字典。其中包含每个点的x和y值,并将其存储在NSUserDefaults中。
当加载默认值时,获取数组,如果你有多个MKPolyline,则在单行和字典的情况下遍历单个数组。然后用点重新创建MKPolyline。