From 53757cdb993ecf4ef87ebdd120c697e0389281b7 Mon Sep 17 00:00:00 2001 From: m-rimestad Date: Thu, 23 Aug 2018 15:16:35 +0200 Subject: [PATCH] Added conditional conformance to Array type --- BinaryCodableExtensions.swift | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/BinaryCodableExtensions.swift b/BinaryCodableExtensions.swift index fe89915..5614894 100644 --- a/BinaryCodableExtensions.swift +++ b/BinaryCodableExtensions.swift @@ -3,29 +3,21 @@ import Foundation -extension Array: BinaryCodable { +extension Array: BinaryCodable where Element: Codable { public func binaryEncode(to encoder: BinaryEncoder) throws { - guard Element.self is Encodable.Type else { - throw BinaryEncoder.Error.typeNotConformingToEncodable(Element.self) - } - try encoder.encode(self.count) for element in self { - try (element as! Encodable).encode(to: encoder) + try (element).encode(to: encoder) } } public init(fromBinary decoder: BinaryDecoder) throws { - guard let binaryElement = Element.self as? Decodable.Type else { - throw BinaryDecoder.Error.typeNotConformingToDecodable(Element.self) - } - let count = try decoder.decode(Int.self) self.init() self.reserveCapacity(count) for _ in 0 ..< count { - let decoded = try binaryElement.init(from: decoder) - self.append(decoded as! Element) + let decoded = try Element.self.init(from: decoder) + self.append(decoded) } } }