phimage / Prephirences

Prephirences is a Swift library that provides useful protocols and convenience methods to manage application preferences, configurations and app-state. UserDefaults
MIT License
573 stars 35 forks source link

Possible issue with keychain and archiving objects #20

Open jsm174 opened 5 years ago

jsm174 commented 5 years ago

I believe I am having an issue when trying to get archived objects from the keychain.

They always come back as nil.

Take the following code:

        var preferences = UserDefaults.standard
        preferences["color", .archive] = UIColor.red
        let color = preferences["color", .archive]  as? UIColor
        print(color)

        var keychainPreferences = KeychainPreferences.sharedInstance
        keychainPreferences["color2", .archive] = UIColor.red
        let color2 = keychainPreferences["color2", .archive]  as? UIColor
        print(color2)

Results in:

Optional(UIExtendedSRGBColorSpace 1 0 0 1)
nil
phimage commented 5 years ago

thanks for the report

maybe keychainPreferences["color2", .archive] return a Data

jsm174 commented 5 years ago

Did a little more testing and this version seems to work:

        let keychainPreferences = KeychainPreferences.sharedInstance
        keychainPreferences.set(objectToArchive: UIColor.red, forKey: "color3")

        let color3 = keychainPreferences.unarchiveObject(forKey: "color3")
        print(color3)