Приведенный ниже код прекрасно работает, например, с UIColor.Purple или UIColor.Yellow, но при использовании UIColor.black происходит сбой приложения.
Неустранимая ошибка: индекс выходит за пределы диапазона, это похоже на компоненты [2] и[3] не существует, когда используется UIColor.black.Я знаю, что я принудительно разворачиваюсь, но разве не все цвета должны иметь RGBA?
//UIColor RGBA to string
public extension UIColor {
class func StringFromUIColor(color: UIColor) -> String{
let components = color.cgColor.components
return "[\(components![0]), \(components![1]), \(components![2]), \(components![3])]"
}
class func UIColorFromString(string: String) -> UIColor {
let componentsStringStepOne = string.replacingOccurrences(of: "[", with: "")
let componentsString = componentsStringStepOne.replacingOccurrences(of: "]", with: "")
let components = componentsString.components(separatedBy: ", ")
return UIColor(red: CGFloat((components[0] as NSString).floatValue), green: CGFloat((components[1] as NSString).floatValue), blue: CGFloat((components[2] as NSString).floatValue), alpha: CGFloat((components[3] as NSString).floatValue))
}
}
и есть ли лучший способ написать эту часть кода?
let componentsStringStepOne = string.replacingOccurrences(of: "[", with: "")
let componentsString = componentsStringStepOne.replacingOccurrences(of: "]", with: "")
let components = componentsString.components(separatedBy: ", ")
Любая помощь приветствуется!Спасибо.