• 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
Re: Another user defaults question
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Another user defaults question


  • Subject: Re: Another user defaults question
  • From: Bill Bumgarner <email@hidden>
  • Date: Thu, 24 Aug 2006 16:19:30 -0700

On Aug 24, 2006, at 4:11 PM, Ivan Kourtev wrote:
After extensive reading of archives and documentation I am still having a hard time getting the workings of NSUserDefaults. So here are a couple questions:

1. I can successfully "register" defaults using a dictionary of keys and values and - [NSUserDefaults registerDefaults]. But nothing seems to be written to a file in the ~/Library/Preferences folder? Is that normal? Does it mean I have to - [NSUserDefaults registerDefaults] every time the application starts?

That is correct. Registration defaults provide a "baseline" set of default values. Any defaults modified and stored in ~/Library/ Preferences or passed on the command line will override the registration defaults.


2. It seems that via - [NSUserDefaults registerDefaults] one can only register defaults that are (or have been converted to) objects because only objects can be inserted into the dictionary that is a required argument. But the NSUSerDefaults class also has things such as setBool/Float/Integer: forKey: Isn't that a contradiction -- to be able or not be able to register certain types of default values directly depending on which method you use?

You would use the NSValue class (Subclass, typically) to encapsulate the values.


However, there is a much better way to do this:

Add a "RegistrationDefaults" key to your application's Info.plist. Make the value a dictionary that contains the set of registration defaults that you want to use. I.e. an entry like (you'll need to convert this to the XML form of plists):

{
... info plist content here ....
RegistrationDefaults = {
	NeutralColor = "whiteColor";
	PositiveThreshold = 10.0;
	DisplayInMenuBar = NO;
	IndexNumberFormat = "###,##0.00";
};
}

And then, somewhere very early in your app's execution:

[[NSUserDefaults standardUserDefaults] registerDefaults:
[[[NSBundle mainBundle] infoDictionary] objectForKey: @"RegistrationDefaults"]];


b.bum
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Cocoa-dev mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden


  • Follow-Ups:
    • Re: Another user defaults question
      • From: Uli Kusterer <email@hidden>
    • Re: Another user defaults question
      • From: Ivan Kourtev <email@hidden>
References: 
 >Another user defaults question (From: Ivan Kourtev <email@hidden>)

  • Prev by Date: Re: Process events in a QuickTime export callback
  • Next by Date: Re: Another user defaults question
  • Previous by thread: Another user defaults question
  • Next by thread: Re: Another user defaults question
  • Index(es):
    • Date
    • Thread