diff --git a/Source/NSMeasurement.m b/Source/NSMeasurement.m index b3bfc79ca..57b26e904 100644 --- a/Source/NSMeasurement.m +++ b/Source/NSMeasurement.m @@ -26,6 +26,8 @@ #include #include #include +#include +#include @implementation NSMeasurement // Creating Measurements @@ -122,10 +124,33 @@ // NSCoding - (void) encodeWithCoder: (NSCoder *)coder { + if([coder allowsKeyedCoding]) + { + [coder encodeObject: _unit forKey: @"unit"]; + [coder encodeDouble: _doubleValue forKey: @"doubleValue"]; + } + else + { + [coder encodeObject: _unit]; + [coder encodeValueOfObjCType: @encode(double) at: &_doubleValue]; + } } - (id) initWithCoder: (NSCoder *)coder { + if((self = [super init]) != nil) + { + if([coder allowsKeyedCoding]) + { + _unit = [coder decodeObjectForKey: @"unit"]; + _doubleValue = [coder decodeDoubleForKey: @"doubleValue"]; + } + else + { + _unit = [coder decodeObject]; + [coder decodeValueOfObjCType: @encode(double) at: &_doubleValue]; + } + } return self; } @end