Monday, 6 June 2011

Objective C - NSUserDefaults - add in support for default values

There may be times when coding in Objective C, for iOS, that you wish to retrieve user settings values, but also specify a default value to return if the setting is not found.

This approach is particularly useful when a user may have upgraded your app, so settings that were previously undefined are now attempted to be retrieved.

A few carefully written methods should get you on track. The fiddly bit is the lack of support for a [[NSUserDefault standardUserDefaults] keyExistsWithName:...] function, but this can be worked around using the objectForKey method, which returns nil if a key is not found:


// Default handling

- (BOOL) boolOrDefaultForKey:(NSString *)keyName withDefault:(BOOL)defaultValue

{

if ([self keyExists:keyName])

return [[NSUserDefaults standardUserDefaults] boolForKey:keyName];

else

return defaultValue;

}

- (BOOL) integerOrDefaultForKey:(NSString *)keyName withDefault:(BOOL)defaultValue

{

if ([self keyExists:keyName])

return [[NSUserDefaults standardUserDefaults] integerForKey:keyName];

else

return defaultValue;

}

- (BOOL) keyExists:(NSString *) keyName

{

return ([[NSUserDefaults standardUserDefaults] objectForKey:keyName] != nil);

}

0 comments:

Post a Comment