无法使用 NSCoding 对 MKPolyline 或 MKPolygon 进行编码
Unable to encode MKPolyline or MKPolygon using 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;
关于为什么会发生这种情况有什么想法吗?
虽然您可以为 MKPolyline 实现 NSCoding,并且您可以制作 NSData 表示并将其存储在 NSUserDefaults 中,它可以以键值形式存储在 NSUserDefaults 中。
如果你有一行或多个数组,则构造一个数组,并将它们与相应的 key/values 绑定,使它们形成一个字典。它具有每个点的 x 和 y 值,并将其存储在 NSUserDefaults 中。
加载默认值时,获取数组,如果有多个 MKPolyline,则在单行和字典的情况下循环遍历单个数组。然后用点重新创建 MKPolyline。
我正在尝试在 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 中。
如果你有一行或多个数组,则构造一个数组,并将它们与相应的 key/values 绑定,使它们形成一个字典。它具有每个点的 x 和 y 值,并将其存储在 NSUserDefaults 中。
加载默认值时,获取数组,如果有多个 MKPolyline,则在单行和字典的情况下循环遍历单个数组。然后用点重新创建 MKPolyline。