redribben icon

Saving UIColor

redribben | PRO | 10/25/17 05:53:30 PM UTC | 0 ⭐ | 326 👁️ | Never ⏰ | []
Swift |

1.63 KB

|

None

|

0 👍

/

0 👎

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)

Comments