import UIKit
extension UIColor {
func rgb() -> [Int] {
var fRed : CGFloat = 0
var fGreen : CGFloat = 0
var fBlue : CGFloat = 0
var fAlpha: CGFloat = 0
if self.getRed(&fRed, green: &fGreen, blue: &fBlue, alpha: &fAlpha) {
let iRed = Int(fRed * 255.0)
let iGreen = Int(fGreen * 255.0)
let iBlue = Int(fBlue * 255.0)
let iAlpha = Int(fAlpha * 255.0)
return [iRed, iGreen, iBlue, iAlpha]
} else {
// Could not extract RGBA components:
return []
}
}
}
extension UserDefaults {
func color(forKey defaultName: String) -> UIColor? {
var color: UIColor?
if let colorData = data(forKey: defaultName) {
let colorArray = NSKeyedUnarchiver.unarchiveObject(with: colorData) as! [Int]
color = UIColor(red: CGFloat(colorArray[0])/255, green: CGFloat(colorArray[1])/255, blue: CGFloat(colorArray[2])/255, alpha: CGFloat(colorArray[3])/255)
}
return color
}
func set(_ value: UIColor?, forKey defaultName: String) {
var colorData: NSData?
if let colorArray = value?.rgb() {
colorData = NSKeyedArchiver.archivedData(withRootObject: colorArray) as NSData?
}
set(colorData, forKey: defaultName)
}
}
extension UIColor {
class func paper() -> UIColor {
return UIColor(red:248/255, green:236/255, blue:194/255, alpha:1.0)
}
}
let myObject: UIColor = UIColor.paper()
let objectArray = [UIColor.white, UIColor.lightGray, UIColor.red, UIColor.paper()]
//Saving
UserDefaults.standard.set(myObject, forKey: "myKey")
//Extracting
let defaultColor : UIColor = UserDefaults.standard.color(forKey: "myKey")!
let indx : Int = objectArray.index(where: { $0.rgb() == defaultColor.rgb() })!
print(indx)
Comments