Giter VIP home page Giter VIP logo

Comments (8)

jklundell avatar jklundell commented on July 21, 2024

That's a nice idea. Taking it a step farther, the API could then be simplified to save & retrieve a single object (presumably but not necessarily a dictionary), without an explicit key (or perhaps with an optional key). Automatic (and extensible) support for NSData, NSString, NSArray, NSDictionary, NSDate, and NSNumber.

from lockbox.

granoff avatar granoff commented on July 21, 2024

The idea isn't bad, but I think one wants to be careful with just how much data you store in the keychain. The keychain should not be used as a total NSUserDefaults replacement. So, generalizing Lockbox simply to store and retrieve plists is a clever improvement. But I am not sure it's the right thing to do. My intent was to be able to store things in the keychain easily, but to overload it (or make it TOO easy to do so.) Let me think about it. Of course, someone can fork the repo and do it themselves too. :-)

from lockbox.

jklundell avatar jklundell commented on July 21, 2024

It's a legitimate concern, but caveat developer. I'll look at migrating my fork. There are obvious advantages: not having to adapt new objects (like my NSDate patch), and as r-e points out, no worrying about delimiter conflicts.

My thinking: expose the object methods, and convert them to encode/decode with NSPropertyListSerialization, and then (I think) remove the class-specific API. NSPropertyListSerialization produces NSData, so the NSUTF8StringEncoding step disappears.

The existing Lockbox API could be preserved by simply NSPropertyListSerialization internally, but I lean toward a leaner API...

from lockbox.

jklundell avatar jklundell commented on July 21, 2024

I've just published jklundell/KCMutableDictionary as a morning project. It's basically an NSMutableDictionary (with minor limitations) that persists itself transparently in the keychain. It handles all the NSPropertyListSerialization-supported classes: NSData, NSString, NSArray, NSDictionary, NSDate, and NSNumber.

Have a look. Feedback welcome.

from lockbox.

granoff avatar granoff commented on July 21, 2024

Nicely done, Jonathan.

from lockbox.

bunnyhero avatar bunnyhero commented on July 21, 2024

For what it's worth, I've tested storing a megabyte of data into the keychain before. It seemed to work fine, but I didn't do any stress-testing: I was just looking for a limit. Note that I am not recommending such use of the keychain!

from lockbox.

rivera-ernesto avatar rivera-ernesto commented on July 21, 2024

JSON format would be even lighter (and more readable) than a Plist string.

Edit:

Also adopting JSON will allow to store complete trees of objects whereas now arrays, sets and dictionaries' contents are limited to strings.

from lockbox.

granoff avatar granoff commented on July 21, 2024

I have just pushed an update to Lockbox that deprecates all the setXxx and related getters, and added methods for archiving and unarchiving objects of any kind that conform to NSSecureCoding.

from lockbox.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.