2020-03-12 05:01:21 +04:00

48 lines
1.4 KiB
Swift

//
// 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)")
}
}
}