From a46edf36438551f538b54e865011d0305f9b1868 Mon Sep 17 00:00:00 2001 From: Gregory John Casamento Date: Fri, 11 Oct 2019 08:58:14 -0400 Subject: [PATCH] Implement NSCoding --- Source/NSMeasurement.m | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) 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