import UIKit extension UserDefaults { func color(forKey defaultName: String) -> UIColor? { var color: UIColor? if let colorData = data(forKey: defaultName) { color = NSKeyedUnarchiver.unarchiveObject(with: colorData) as? UIColor } return color } func set(_ value: UIColor?, forKey defaultName: String) { var colorData: NSData? if let color = value { colorData = NSKeyedArchiver.archivedData(withRootObject: color) 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()] print(myObject) //Prints: UIExtendedSRGBColorSpace 0.972549 0.92549 0.760784 1 print(objectArray) //Prints: [UIExtendedGrayColorSpace 1 1, UIExtendedGrayColorSpace 0.666667 1, UIExtendedSRGBColorSpace 1 0 0 1, UIExtendedSRGBColorSpace 0.972549 0.92549 0.760784 1] let indx : Int = objectArray.index(where: { $0 == myObject })! print(indx) //Prints: 3 //Saving UserDefaults.standard.set(myObject, forKey: "myKey") //Extracting let defaultColor : UIColor = UserDefaults.standard.color(forKey: "myKey")! print(defaultColor) //Prints: UIExtendedSRGBColorSpace 0.972549 0.92549 0.760784 1 let indexOfSavedColor : Int = objectArray.index(of: defaultColor)! //Error Message here: fatal error: unexpectedly found nil while unwrapping an Optional value print(indexOfSavedColor)