// // Convert.swift // GraphTest // // Created by Andrei Salavei on 3/11/19. // Copyright © 2019 Andrei Salavei. All rights reserved. // import Foundation #if os(macOS) import Cocoa #else import UIKit #endif public enum Convert { public static func doubleFrom(_ value: Any?) throws -> Double { guard let double = try doubleFrom(value, lenientCast: false) else { throw ChartsError.generalConversion("Unable to cast \(String(describing: value)) to \(Double.self)") } return double } public static func doubleFrom(_ value: Any?, lenientCast: Bool = false) throws -> Double? { guard let value = value else { return nil } if let intValue = value as? Int { return Double(intValue) } else if let floatValue = value as? Float { return Double(floatValue) } else if let int64Value = value as? Int64 { return Double(int64Value) } else if let intValue = value as? Int { return Double(intValue) } else if let stringValue = value as? String { if let doubleValue = Double(stringValue) { return doubleValue } } if lenientCast { return nil } else { throw ChartsError.generalConversion("Unable to cast \(String(describing: value)) to \(Double.self)") } } }