diff --git a/Sources/Amplitude/Utilities/CodableExtension.swift b/Sources/Amplitude/Utilities/CodableExtension.swift index 4b981aad..22f52c50 100644 --- a/Sources/Amplitude/Utilities/CodableExtension.swift +++ b/Sources/Amplitude/Utilities/CodableExtension.swift @@ -134,6 +134,8 @@ extension KeyedEncodingContainer { try container.encodeIfPresent(val, forKey: JSONCodingKeys(stringValue: item.key)!) } else if let val = item.value as? CGFloat { try container.encodeIfPresent(val, forKey: JSONCodingKeys(stringValue: item.key)!) + } else if let val = item.value as? Decimal { + try container.encodeIfPresent(val, forKey: JSONCodingKeys(stringValue: item.key)!) } else if let val = item.value as? Bool { try container.encodeIfPresent(val, forKey: JSONCodingKeys(stringValue: item.key)!) } else if let val = item.value as? [Any] { diff --git a/Tests/AmplitudeTests/Events/BaseEventTests.swift b/Tests/AmplitudeTests/Events/BaseEventTests.swift index 5f03ffb3..8b7c0079 100644 --- a/Tests/AmplitudeTests/Events/BaseEventTests.swift +++ b/Tests/AmplitudeTests/Events/BaseEventTests.swift @@ -31,7 +31,8 @@ final class BaseEventTests: XCTestCase { "int64": 1 as Int64, "int32": 1 as Int32, "cgfloat": 3.14 as CGFloat, - "double": 3.14 as Double + "double": 3.14 as Double, + "decimal": 3.14 as Decimal ] ) @@ -62,6 +63,10 @@ final class BaseEventTests: XCTestCase { baseEventDict!["event_properties"]!["double" as NSString] as! Double, 3.14 ) + XCTAssertEqual( + Decimal(baseEventDict!["event_properties"]!["decimal" as NSString] as! Double), + Decimal(3.14) + ) XCTAssertEqual( baseEventDict!["event_properties"]!["string" as NSString] as! String, "stringValue"