Как преобразовать NSColor в Color и наоборот в SwiftUI

#macos #colors #casting #swiftui #nscolor

#macos #Цвет #Кастинг #swiftui #nscolor

Вопрос:

Я разрабатываю приложение для macOS с помощью SwiftUI.

У меня есть расширение для сохранения NSColors при пользовательских ошибках по умолчанию и получения его позже.

Я хочу использовать это расширение, но не могу преобразовать SwiftUI Color в NSColor и наоборот.

Коды, которые я пробовал до сих пор, были следующими:

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

or

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

Ни один из приведенных выше кодов не сработал.

Вот расширение для сохранения и чтения 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)")
    }
}
}