How to set initial values for NSUserDefault Keys? How to set initial values for NSUserDefault Keys? ios ios

How to set initial values for NSUserDefault Keys?


You should use the registerDefaults method of NSUserDefaults. Prepare a plist file in your bundle that contains the default preferences and then use that plist to register the defaults.

NSString *defaultPrefsFile = [[NSBundle mainBundle] pathForResource:@"defaultPrefs" ofType:@"plist"];NSDictionary *defaultPreferences = [NSDictionary dictionaryWithContentsOfFile:defaultPrefsFile];[[NSUserDefaults standardUserDefaults] registerDefaults:defaultPreferences];

You have to execute this code on every launch of your app. It will add these values to a separate domain in the user defaults hierarchy. Whenever your app's user defaults don't provide a value for a certain key, NSUserDefaults will fall back to this domain and retrieve the value from there.


If you have many default values, let use ola's answer, otherwise this is good for a few params

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];if (![defaults boolForKey:USERDEFAULT_IS_INITIALIZED]) {     [defaults setBool:YES forKey:USERDEFAULT_IS_INITIALIZED];    // Set initial values     ...    [defaults synchronize];}


if ([[[[NSUserDefaults standardUserDefaults] dictionaryRepresentation] allKeys] containsObject:@"initialValuesHaveBeenWritten"]){    [[NSUserDefaults standardUserDefaults] setValue:obj1 forKey:key1];    [[NSUserDefaults standardUserDefaults] setValue:obj2 forKey:key2];    [[NSUserDefaults standardUserDefaults] setValue:obj1 forKey:@"initialValuesHaveBeenWritten"];    [[NSUserDefaults standardUserDefaults] synchronize];}

NB: Not tested, done from memory