Some handy NSUserDefaults macros/functions
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.

Some handy NSUserDefaults helper

This helper make it easy to store, fetch and observe values in the NSUserDefaults. I first discovered them in kod and now use it in Justnotes as well.

Show me some code.

Alright. How did you register default values the old way?

NSUserDefaults *standardDefaults = [NSUserDefaults standardUserDefaults];
NSDictionary *defaults = [NSDictionary dictionaryWithObjectsAndKeys: @"", @"user/email"];
[standardUserDefaults registerDefaults:defaults]

Now, do it the easy way.

defaults_init( @{ @"user/email"  : @"" });

Isn't that nice and much shorter? Let's take a look at more examples.

// Set
defaults_set_object(@"user/username", @"Matthias");
defaults_set_object(@"user/logged-in", @(YES));

// Get
NSString *email = defaults_object(@"user/email");
NSString *username = defaults_object(@"user/username");
BOOL loggedIn = [defaults_object(@"user/logged-in") boolValue];

What's also nice is that you can observe a value and get a callback when it changed.

defaults_observe(@"user/email", ^(NSString *email){

Unit Tests

The shell script run_unit_tests includes some basic unit tests. You can run them by executing sh run_unit_tests and without involving Xcode.