• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Problem with NSUserDefaultsController
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Problem with NSUserDefaultsController


  • Subject: Problem with NSUserDefaultsController
  • From: Mark Allan <email@hidden>
  • Date: Sun, 31 Aug 2008 17:13:33 +0100

Hi,

I've been playing around with bindings to NSUserDefaultsController in a very simple app to test saving preferences, but the [sharedUserDefaultsController save:self] method seems to return immediately without waiting for the save operation to complete.

The save does actually take place, which I can see if I open the plist file in Property List Editor, but if the very next line after sending the save message is one which reads a property from the plist, it's the old value which gets returned rather than the newly saved one.

My test app consists of only one window with a slider (whose value is bound to the Shared User Defaults Controller), and three buttons: one connected to savePrefs, one to revertPrefs, and one to checkValue which prints out the slider's value as stored within the model.

Here's the entire code:

-(id)init {
[super init];
[[NSUserDefaultsController sharedUserDefaultsController] setAppliesImmediately:NO];
myPrefs = [NSUserDefaults standardUserDefaults];
[self readPrefs];
return self;
}


-(void) readPrefs{
	//[myPrefs synchronize];  //this line doesn't make any difference
	theValue = [myPrefs objectForKey:@"thevalue"];
}

-(void) savePrefs:(NSObject *) sender{
	// save prefs and close the window
	[[NSUserDefaultsController sharedUserDefaultsController] save:self];
	[self readPrefs];
}

-(void) checkValue:(NSObject *) sender{
	NSLog(@"value is %@",theValue);
}

-(void) revertPrefs:(NSObject *) sender{
// revert and close the window
[[NSUserDefaultsController sharedUserDefaultsController] revert:sender];
}


If I move [self readPrefs] out of the savePrefs method and into checkValue, it prints the new value as expected - but I don't want to be reading the preferences every time I need to use that particular variable. Can someone explain the right way to do this please?

For what it's worth, I also get these compiler warnings for the line with [sharedUserDefaultsController save:]

warning: multiple methods named '-save:' found
warning: using '-(void)save:(id)sender'
warning: also found '-(BOOL)save:(NSError **)error'

Thanks
Mark

_______________________________________________

Cocoa-dev mailing list (email@hidden)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden


  • Follow-Ups:
    • Re: Problem with NSUserDefaultsController
      • From: Keary Suska <email@hidden>
  • Prev by Date: Re: accessing netinfo db from cocoa?
  • Next by Date: Re: Problem with NSUserDefaultsController
  • Previous by thread: Re: Subclassing NSCoder
  • Next by thread: Re: Problem with NSUserDefaultsController
  • Index(es):
    • Date
    • Thread