diff --git a/MVMCoreUI/CustomPrimitives/Color.swift b/MVMCoreUI/CustomPrimitives/Color.swift index 475e8aea..c1fd4b33 100644 --- a/MVMCoreUI/CustomPrimitives/Color.swift +++ b/MVMCoreUI/CustomPrimitives/Color.swift @@ -44,6 +44,7 @@ public final class Color: Codable { enum ColorError: Error { case badName(reason: String) + case invalidHex(reason: String) } //-------------------------------------------------- @@ -53,21 +54,21 @@ public final class Color: Codable { public init(uiColor: UIColor) { self.uiColor = uiColor hex = UIColor.hexString(for: uiColor) ?? "" - determineRGBA() + try? determineRGBA() } public init?(uiColor: UIColor?) { guard let uiColor = uiColor else { return nil } self.uiColor = uiColor hex = UIColor.hexString(for: uiColor) ?? "" - determineRGBA() + try? determineRGBA() } init?(name: String) { guard let colorTuple = UIColor.names[name] else { return nil } self.uiColor = colorTuple.uiColor self.hex = colorTuple.hex - determineRGBA() + try? determineRGBA() } public init?(colorString: String) throws { @@ -75,7 +76,7 @@ public final class Color: Codable { self.uiColor = components.color hex = components.hex name = components.name ?? "" - determineRGBA() + try determineRGBA() } //-------------------------------------------------- @@ -99,7 +100,7 @@ public final class Color: Codable { name = components.name ?? "" } - determineRGBA() + try determineRGBA() } public func encode(to encoder: Encoder) throws { @@ -135,9 +136,12 @@ public final class Color: Codable { return CGFloat(Int(hex[start.. 6 else { + throw ColorError.invalidHex(reason: "Invalid hex: \(hex)") + } let redStart = hex.startIndex let redEnd = hex.index(redStart, offsetBy: 2)