Up
Authors
- Georg Tuparev (
Tuparev@EMBL-Heidelberg.de
)
-
- Richard Frith-Macdonald (
rfm@gnu.org
)
-
Version: 38018
Date: 2014-07-28 08:40:29 -0600 (Mon, 28 Jul 2014)
Copyright: (C) 1995-2001 Free Software Foundation, Inc.
- Declared in:
- Foundation/NSUserDefaults.h
Availability: OpenStep
NSUserDefaults provides an interface to the
defaults system, which allows an application
access to global and/or application specific
defaults set by the user. A particular instance of
NSUserDefaults, standardUserDefaults, is
provided as a convenience. Most of the information
described below pertains to the
standardUserDefaults. It is unlikely
that you would want to instantiate your own
userDefaults object, since it would not be set
up in the same way as the standardUserDefaults.
Defaults are managed based on domains.
Certain domains, such as
NSGlobalDomain
, are persistent. These
domains have defaults that are stored externally.
Other domains are volatile. The defaults in these
domains remain in effect only during the existence
of the application and may in fact be different for
applications running at the same time. When
asking for a default value from
standardUserDefaults, NSUserDefaults
looks through the various domains in a particular
order.
-
GSPrimaryDomain
... volatile
-
Contains values set at runtime and intended to
supercede any values set in other domains. This
should be used with great care since it overrides
values which may have been set explicitly by the
user.
-
NSArgumentDomain
... volatile
-
Contains defaults read from the arguments
provided to the application at startup.
Pairs of arguments are used for this, with the
first argument in each pair being the name of a
default (with a hyphen prepended) and the second
argument of the pair being the value of the
default.
NB. In GNUstep special arguments
of the form --GNU-Debug=...
are used to
enable debugging. Despite beginning with a hyphen,
these are not treated as default keys.
-
Application (name of the current process)...
persistent
-
Contains application specific defaults, such as
window positions. This is the domain used by the
-setObject:forKey:
method and is the domain normally used when
setting preferences for an application.
-
NSGlobalDomain
... persistent
-
Global defaults applicable to all applications.
-
Language (name based on users's language)...
volatile
-
Constants that help with localization to the
users's language.
GSConfigDomain
... volatile
-
Information retrieved from the GNUstep
configuration system. Usually the system
wide and user specific GNUstep.conf files, or from
information compiled in when the base library
was built.
In addition to this standard
configuration information, this domain
contains all values from property lists store in
the GlobalDefaults subdirectory or from the
GlobalDefaults.plist file stored in
the same directory as the system wide GNUstep.conf
file.
-
NSRegistrationDomain
... volatile
-
Temporary defaults set up by the application.
The NSLanguages default value is used to set
up the constants for localization. GNUstep will also
look for the LANGUAGES
environment
variable if it is not set in the defaults system.
If it exists, it consists of an array of languages that
the user prefers. At least one of the languages should
have a corresponding localization file (typically
located in the Languages
directory of
the GNUstep resources).
As a special extension, on systems that support locales
(e.g. GNU/Linux and Solaris), GNUstep will use
information from the user specified locale, if
the NSLanguages default value is not found.
Typically the locale is specified in the
environment with the LANG
environment variable.
The first change to a persistent domain after a
-synchronize
will cause an NSUserDefaultsDidChangeNotification to
be posted (as will any change caused by reading new
values from disk), so your application can keep
track of changes made to the defaults by other
software.
NB. The GNUstep implementation differs from the Apple
one in that it is thread-safe while Apple's (as of
MacOS-X 10.1) is not.
Method summary
+ (void)
resetStandardUserDefaults;
Availability: Not in OpenStep/MacOS-X
Resets the shared user defaults object to reflect
the current user ID. Needed by setuid processes which
change the user they are running as.
In
GNUstep you should call
GSSetUserName()
when changing your effective user ID, and that
function will call this function for you.
+ (void)
setUserLanguages: (
NSArray*)languages;
Availability: Not in OpenStep/MacOS-X
Sets the array of user languages
preferences. Places the specified array in the
NSLanguages user default.
+ (
NSUserDefaults*)
standardUserDefaults;
Availability: OpenStep
Returns the shared defaults object. If it doesn't
exist yet, it's created. The defaults are initialized
for the current user. The search list is guaranteed to
be standard only the first time this method is invoked.
The shared instance is provided as a convenience; other
instances may also be created.
+ (
NSArray*)
userLanguages;
Availability: Not in OpenStep/MacOS-X
Returns the array of user languages preferences.
Uses the NSLanguages user default if
available, otherwise tries to infer setup from
operating system information etc (in particular,
uses the LANGUAGES environment variable).
- (void)
addSuiteNamed: (
NSString*)aName;
Availability: Not in OpenStep/MacOS-X
Adds the domain names
aName to the search
list of the receiver.
The domain is added after
the application domain.
Suites may be removed
using the
-removeSuiteNamed:
method.
- (
NSArray*)
arrayForKey: (
NSString*)defaultName;
Availability: OpenStep
Looks up a value for a specified default using
-objectForKey:
and checks that it is an NSArray object. Returns
nil
if it is not.
- (BOOL)
boolForKey: (
NSString*)defaultName;
Availability: OpenStep
Looks up a value for a specified default using
-objectForKey:
and returns its boolean representation.
Returns
NO
if it is not a boolean.
The
text 'yes' or 'true' or any non zero numeric value is
considered to be a boolean
YES
.
Other string values are
NO
.
NB.
This differs slightly from the documented behavior for
MacOS-X (August 2002) in that the GNUstep version
accepts the string 'TRUE' as equivalent to 'YES'.
- (
NSData*)
dataForKey: (
NSString*)defaultName;
Availability: OpenStep
Looks up a value for a specified default using
-objectForKey:
and checks that it is an NSData object. Returns
nil
if it is not.
- (
NSDictionary*)
dictionaryForKey: (
NSString*)defaultName;
Availability: OpenStep
Looks up a value for a specified default using
-objectForKey:
and checks that it is an NSDictionary object. Returns
nil
if it is not.
- (
NSDictionary*)
dictionaryRepresentation;
Availability: OpenStep
Returns a dictionary representing the current state
of the defaults system... this is a merged version of
all the domains in the search list.
- (double)
doubleForKey: (
NSString*)defaultName;
Availability: MacOS-X 10.5.0
Looks up a value for a specified default using
-objectForKey:
and checks that it is a
double.
Returns 0.0 if it is not.
- (float)
floatForKey: (
NSString*)defaultName;
Availability: OpenStep
Looks up a value for a specified default using
-objectForKey:
and checks that it is a
float. Returns
0.0 if it is not.
- (id)
init;
Availability: OpenStep
Initializes defaults for current user calling
initWithUser:
- (id)
initWithUser: (
NSString*)userName;
Availability: OpenStep
This is a designated initialiser for the class.
Initializes defaults for the specified user.
Returns an object with an empty search list.
- (
NSInteger)
integerForKey: (
NSString*)defaultName;
Availability: OpenStep
Looks up a value for a specified default using
-objectForKey:
and returns its integer value or 0 if it is not
representable as an integer.
- (id)
objectForKey: (
NSString*)defaultName;
Availability: OpenStep
Looks up a value for a specified default using. The
lookup is performed by accessing the domains in the
order given in the search list.
Returns
nil
if defaultName cannot be
found.
- (
NSDictionary*)
persistentDomainForName: (
NSString*)domainName;
Availability: OpenStep
Returns the persistent domain specified by
domainName.
- (
NSArray*)
persistentDomainNames;
Availability: OpenStep
Returns an array listing the name of all the
persistent domains.
- (void)
registerDefaults: (
NSDictionary*)newVals;
Availability: OpenStep
Merges the contents of the dictionary
newVals into the registration domain.
Registration defaults may be added to or
replaced using this method, but may never be
removed. Thus, setting registration defaults at
any point in your program guarantees that the defaults
will be available thereafter.
- (void)
removeObjectForKey: (
NSString*)defaultName;
Availability: OpenStep
Removes the default with the specified name from
the application domain.
- (void)
removePersistentDomainForName: (
NSString*)domainName;
Availability: OpenStep
Removes the persistent domain specified by
domainName from the user defaults.
Causes a NSUserDefaultsDidChangeNotification to be
posted if this is the first change to a
persistent-domain since the last
-synchronize
.
- (void)
removeSuiteNamed: (
NSString*)aName;
Availability: Not in OpenStep/MacOS-X
Removes the named domain from the search list of
the receiver.
Suites may be added using the
-addSuiteNamed:
method.
- (void)
removeVolatileDomainForName: (
NSString*)domainName;
Availability: OpenStep
Removes the volatile domain specified by
domainName from the user defaults.
- (
NSArray*)
searchList;
Availability: OpenStep
Returns an array listing the domains searched in
order to look up a value in the defaults system. The
order of the names in the array is the order in which
the domains are searched.
- (void)
setBool: (BOOL)value
forKey: (
NSString*)defaultName;
Availability: OpenStep
Sets a boolean
value for
defaultName in the application domain.
Calls
-setObject:forKey:
to make the change by storing a string containing either
the word
YES
or
NO
.
- (void)
setDouble: (double)value
forKey: (
NSString*)defaultName;
Availability: MacOS-X 10.5.0
Sets a
double value for
defaultName in the application domain.
Calls
-setObject:forKey:
to make the change by storing a
double
NSNumber
instance.
- (void)
setFloat: (float)value
forKey: (
NSString*)defaultName;
Availability: OpenStep
Sets a
float value for
defaultName in the application domain.
Calls
-setObject:forKey:
to make the change by storing a
float
NSNumber
instance.
- (void)
setInteger: (
NSInteger)value
forKey: (
NSString*)defaultName;
Availability: OpenStep
Sets an integer
value for
defaultName in the application domain.
Calls
-setObject:forKey:
to make the change by storing an intege
NSNumber
instance.
- (void)
setObject: (id)value
forKey: (
NSString*)defaultName;
Availability: OpenStep
Sets a copy of an object
value for
defaultName in the application domain.
The
defaultName must be a
non-empty string.
The
value to
be copied into the domain must be an instance of one of
the
[NSString -propertyList]
classes.
Causes a NSUserDefaultsDidChangeNotification to be
posted if this is the first change to a
persistent-domain since the last
-synchronize
.
If value is nil
, this is
equivalent to the
-removeObjectForKey:
method.
- (void)
setPersistentDomain: (
NSDictionary*)domain
forName: (
NSString*)domainName;
Availability: OpenStep
Replaces the persistent-domain specified by
domainName with
domain... a
dictionary containing keys and defaults values.
Raises an NSInvalidArgumentException if
domainName already exists as a
volatile-domain.
Causes a
NSUserDefaultsDidChangeNotification
to be posted if this is the first change to a
persistent-domain since the last
-synchronize
.
- (void)
setSearchList: (
NSArray*)newList;
Availability: OpenStep
Sets the list of the domains searched in order to look
up a value in the defaults system. The order of the
names in the array is the order in which the domains
are searched.
On lookup, the first match is
used.
- (void)
setVolatileDomain: (
NSDictionary*)domain
forName: (
NSString*)domainName;
Availability: OpenStep
Sets the volatile-domain specified by
domainName to domain... a
dictionary containing keys and defaults values.
Raises an NSInvalidArgumentException if
domainName already exists as either a
volatile-domain or a persistent-domain.
- (
NSArray*)
stringArrayForKey: (
NSString*)defaultName;
Availability: OpenStep
Calls
-arrayForKey:
to get an array value for
defaultName and
checks that the array contents are string objects...
if not, returns
nil
.
- (
NSString*)
stringForKey: (
NSString*)defaultName;
Availability: OpenStep
Looks up a value for a specified default using
-objectForKey:
and checks that it is an NSString. Returns
nil
if it is not.
- (BOOL)
synchronize;
Availability: OpenStep
Ensures that the in-memory and on-disk
representations of the defaults are in
sync. You may call this yourself, but probably don't
need to since it is invoked at intervals whenever a
runloop is running.
If any persistent domain
is changed by reading new values from disk, an
NSUserDefaultsDidChangeNotification
is posted.
- (
NSDictionary*)
volatileDomainForName: (
NSString*)domainName;
Availability: OpenStep
Returns the volatile domain specified by
domainName.
- (
NSArray*)
volatileDomainNames;
Availability: OpenStep
Returns an array listing the name of all the
volatile domains.
Up