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)