The goal is to access the preferences of a second application and to be able to change those preferences. I thus tried:
theDef = [[NSUserDefaults standardUserDefaults] retain]; [theDef addSuiteNamed:MyHelperAppDomain];
However, when a setting was changed and when I instruct the NSUserDefaults class to synchronize, the changes are not saved in the MyHelperAppDomain. This is because addSuiteNamed:
only adds the settings from that domain; it does not change the domain!
How did I find the mistake? Tried this command in the Terminal:
> defaults find DateFormat Found 1 keys in domain 'se.tredje.myapp': {DateFormat = "%+"; } Found 1 keys in domain 'MyHelperApp': {DateFormat = "%F"; }
To change the preferences for a different application domain, I have found this alternative:
CFPreferencesSetAppValue( (CFStringRef) DefaultDateFormat, (CFStringRef) DefaultDateFormatDefault, (CFStringRef) MyHelperAppDomain ); CFPreferencesAppSynchronize( (CFStringRef) MyHelperAppDomain );