PDA

View Full Version : NSUserDefaults(Controller)




davidmirv
Apr 13, 2013, 03:17 PM
I am not understanding when I change 2 values an NSTextField and a NSTextView via

_stopwatchLabel setStringValue:@"00:00:00"];
[taskDescription setString:@""];


which both have their values bound to Userdefaultscontroller , when I trigger that code and quit the app the new values aren't saved..and the old values are restored..
I did some tinkering around and subscribed to NSUserDefaultsDidChangeNotification and noticed that when I set those values its not even triggering the notification? Have also tried syncronize on the nsuserdefaults within nsuserdefaultscotnroller to no avail (setAppliesImediately is true so a save: would not help)

Do I have to also update NSUserDefaults manually when setting values manually??

can anyone help me out? Not sure why I have this seemingly strange NSUserDefaults behavior

thanks



onejed1
Apr 15, 2013, 12:30 PM
I use [NSUserDefaults standardUserDefaults] a lot, and add/change stuff manually. You have to synchronize after you manually add/change things so that your changes are "committed"...

e.g. in my case:
[[NSUserDefaults standardUserDefaults] synchronize];

So it's probably similar in your case.

Catfish_Man
Apr 15, 2013, 06:21 PM
I use [NSUserDefaults standardUserDefaults] a lot, and add/change stuff manually. You have to synchronize after you manually add/change things so that your changes are "committed"...

e.g. in my case:
[[NSUserDefaults standardUserDefaults] synchronize];

So it's probably similar in your case.

You absolutely should not need to call -synchronize during normal usage of NSUserDefaults on any recent version of Mac OS X. If you've run across a case where you do need to, please file a bug at bugreport.apple.com

onejed1
Apr 17, 2013, 03:29 PM
You absolutely should not need to call -synchronize during normal usage of NSUserDefaults on any recent version of Mac OS X. If you've run across a case where you do need to, please file a bug at bugreport.apple.com

Sorry, i'm speaking from an iOS developer perspective, I haven't had the chance to try out Mac OS development and was unaware of this distinction. Thanks for pointing that out.