Macos 如何将NSColor转换为彩色&;在SwiftUI上反之亦然

Macos 如何将NSColor转换为彩色&;在SwiftUI上反之亦然,macos,colors,casting,swiftui,nscolor,Macos,Colors,Casting,Swiftui,Nscolor,我正在用SwiftUI开发一个macOS应用程序 我有一个扩展来保存Userdefaults上的nscolor&稍后再获取它 我想使用这个扩展,但不能将SwiftUI颜色转换为NSColor,反之亦然 到目前为止,我尝试的代码是: let swiftUIColor = Color.red let nsColor = NSColor(swiftUIColor) or let nsColor = NSColor.red let swiftUIColor = Color(nsColor) 上述代

我正在用SwiftUI开发一个macOS应用程序

我有一个扩展来保存Userdefaults上的nscolor&稍后再获取它

我想使用这个扩展,但不能将SwiftUI颜色转换为NSColor,反之亦然

到目前为止,我尝试的代码是:

let swiftUIColor = Color.red
let nsColor = NSColor(swiftUIColor)

or

let nsColor = NSColor.red
let swiftUIColor = Color(nsColor)
上述代码都不起作用

以下是在UserDefault上保存和读取NSColor的扩展:

extension UserDefaults {

func color(forKey key: String) -> NSColor? {
    guard let colorData = data(forKey: key) else { return nil }
    do {
        return try NSKeyedUnarchiver.unarchivedObject(ofClass: NSColor.self, from: colorData)
    } catch let error {
        print("color error \(error.localizedDescription)")
        return nil
    }
}

func set(_ value: NSColor?, forKey key: String) {
    guard let color = value else { return }
    do {
        let data = try NSKeyedArchiver.archivedData(withRootObject: color, requiringSecureCoding: false)
        set(data, forKey: key)
    } catch let error {
        print("error color key data not saved \(error.localizedDescription)")
    }
}
}