I'm developing a macOS app with SwiftUI.
I have an extension to save the NSColors on Userdefaults & get it later.
I want to use this extension but cannot cast the SwiftUI Color to NSColor and vice versa.
The codes I tried so far was these:
let swiftUIColor = Color.red
let nsColor = NSColor(swiftUIColor)
or
let nsColor = NSColor.red
let swiftUIColor = Color(nsColor)
None of the above codes did work out.
Here is the extension to save & read NSColor on Userdefaults:
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)")
}
}
}