无法将字符串 hex 转换为 hexint,然后再转换为 UIColor

Cant convert string hex into hexint and then into UIColor

我有 JSON 个包含字符串数组的数据。当我解码这些数据时,我需要将字符串转换为整数,然后使用它来创建 UIColors。但是当我将我的十六进制从字符串转换为 int 时 returns 我的颜色错误。 这里的代码

struct DrawingElement {
    let colorsForCells: [UIColor]
}

extension DrawingElement: Decodable {
    
    enum CodingKeys: String, CodingKey {
        case colorsForCells = "cells"
    }
    
    init(from decoder: Decoder) throws {
        let container = try decoder.container(keyedBy: CodingKeys.self)
        
        let rawColors = try container.decode([String].self, forKey: .colorsForCells)
        colorsForCells = rawColors.map {
            
            let value = Int([=10=])
            let color = uiColorFromHex(rgbValue: value ?? 77)
            return color == .black ? .white : color
            
        }
    }
   
}
func uiColorFromHex(rgbValue: Int) -> UIColor {
    
    let red =   CGFloat((rgbValue & 0xFF0000) >> 16) / 0xFF
    let green = CGFloat((rgbValue & 0x00FF00) >> 8) / 0xFF
    let blue =  CGFloat(rgbValue & 0x0000FF) / 0xFF
    let alpha = CGFloat(1.0)
    
    return UIColor(red: red, green: green, blue: blue, alpha: alpha)
}

我的数据字符串示例:“0xe7c79d”

您必须删除 0x 前缀,然后指定基数 16:

let s = "0xe7c79d"
print(Int(s)) // nil

let value = s.hasPrefix("0x")
    ? String(s.dropFirst(2))
    : s
print(Int(value, radix: 16)) // 15189917