我试图将一个MKMapView
中心和跨度编码为一个NSKeyedArchiver
状态保存。我发现了一些方便的新 MapKitNSValue
添加,valueWithMKCoordinate:
以及valueWithMKCoordinate:
. 尝试将这些编码到键控存档器中失败:
- (void)encodeRestorableStateWithCoder:(NSCoder *)coder
{
NSValue *mapCenterValue = [NSValue valueWithMKCoordinate:mapView.centerCoordinate];
NSValue *mapSpanValue = [NSValue valueWithMKCoordinateSpan:mapView.region.span];
[coder encodeObject:mapCenterValue forKey:kMapCenter];
[coder encodeObject:mapSpanValue forKey:kMapSpan];
}
由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[NSKeyedArchiver encodeValueOfObjCType:at:]:此归档器无法编码结构”
我知道这个问题的解决方案是将单个双打编码为四个单独的键。
我的问题是为什么会发生这种情况。AnNSValue
是一个对象,为什么它告诉我“这个归档器不能编码结构”