NSUserDefaultsクラス

2010. 10. 23
●概要

NSUserDefaultsクラスはシステムの初期設定と対話するプログラムインターフェイスを提供します。

システムの初期設定は、ユーザの設定に合わせてアプリケーションの動作をカスタマイズすることができます。

例えばアプリケーションで、どの位の大きさでユニットを表示するか、またはどの位の頻度で文書を自動保存するかなどを決めることができます。

アプリケーションは設定の値を割り当てて記録できるように、ユーザのデフォルトデータベースにパラメータを設定します。

パラメータは一般的に、アプリケーションが初期状態で起動する、または初期設定で動作する方法を決定する場合に参照します。

NSUserDefaultsオブジェクトは、実行時にユーザのデフォルトデータベースからアプリケーションの初期設定の読み込に使用します。

NSUserDefaultsは、初期値が必要になる度にユーザのデフォルトデータベースを開くことを避けるため、情報をキャッシュします。

synchronizeメソッドは、ユーザのデフォルトデータベースとメモリ内のキャッシュを、定期間隔で自動的に同期を取ります。

NSUserDefaultsクラスは、float、double、integer、Boolean、URLといった一般的な型へのアクセスに簡易メソッドを提供します。

デフォルトオブジェクトは、NSData、NSString、NSNumber、NSDate、NSArray、NSDictionaryのインスタンス(もしくはコレクションのインスタンスの組み合わせ)のプロパティリストである必要があります。

他の型のオブジェクトを格納する場合、通常はNSDataのインスタンスを生成してアーカイブする必要があります。

詳細は『Preferences and Settings Programming Guide』を参照してください。

NSUserDefaultsが返す値が不変の場合であっても、値のオブジェクトは可変で設定します。

例えば、『MyStringDefault』という値を可変文字列で設定した場合、stringForKey:を使って文字列を取得すると不変となります。

デフォルトデータベースはユーザ毎に自動生成されます。

NSUserDefaultsクラスは、現在ホスト毎の設定をサポートしていません。

これを行うには、CFPreferences API(『Preferences Utilities Reference』を参照)を使用する必要があります。

NSUserDefaultsで正確にホスト毎の設定を読み込むには、NSUserDefaultsのコードにCFPreferencesのコードを混在させることで安全に行えます。

アプリケーションが管理環境をサポートする場合、NSUserDefaultsオブジェクトを使って、ユーザの承認を管理者が管理する設定を行うことができます。

管理環境は、コンピュータラボや教室などで管理者または教師が、特定の方法でシステムを構成することができます。

これらの状況では、ユーザ設定やデフォルト設定を教師が確立することができます。

この方法で設定を管理する場合、アプリケーションは任意の適切な制御を無効にして、その設定を編集することを防ぐ必要があります。

NSUserDefaultsクラスはスレッドセーフです。

NSURLとファイル参照URLの持続性

処理中にNSURLインスタンスを使ってファイルを参照する場合、ロケーションベーストラッキング(file:スキームURLは基本的にパス)とファイルシステム識別トラッキング(file:スキームURLはファイル参照URL)を区別することが重要です。

NSURLを永続化する場合は、その動作を考慮して取得する必要があります。

アプリケーションが識別子でリソースの位置を追跡する場合は、ユーザがファイルを移動しても見つけることができ、その後NSURLのブックマークデータを明示的に書き込むか、ファイル参照URLをエンコードします。

ファイル参照で明らかに制御を超えた追跡を要求する場合は、[NSUserDefaults setURL:forKey:]で出力されるNSUserDefaultsのブックマークの書き込みを信頼するには注意が必要です。

この時、+[NSURL URLByResolvingBookmarkData:options:relativeToURL:bookmarkDataIsStale:error:]を呼び出すと、I/Oまたは要求したユーザインターフェイスの相互作用でアプリケーションが処理できる可能性があります。



●タスク

●共有NSUserDefaultsインスタンスの取得

+ standardUserDefaults
+ resetStandardUserDefaults

●NSUserDefaultsオブジェクトの初期化

– init
– initWithUser:

●デフォルトの登録

– registerDefaults:

●デフォルト値の取得

– arrayForKey:
– boolForKey:
– dataForKey:
– dictionaryForKey:
– floatForKey:
– integerForKey:
– objectForKey:
– stringArrayForKey:
– stringForKey:
– doubleForKey:
– URLForKey:

●デフォルト値の設定

– setBool:forKey:
– setFloat:forKey:
– setInteger:forKey:
– setObject:forKey:
– setDouble:forKey:
– setURL:forKey:

●デフォルトの削除

– removeObjectForKey:

●永続的なドメインの保持

– synchronize
– persistentDomainForName:
– persistentDomainNames
– removePersistentDomainForName:
– setPersistentDomain:forName:

●管理環境キーへのアクセス

– objectIsForcedForKey:
– objectIsForcedForKey:inDomain:

●検索リストの管理

– dictionaryRepresentation

●揮発性ドメインの保持

– removeVolatileDomainForName:
– setVolatileDomain:forName:
– volatileDomainForName:
– volatileDomainNames

●組の保持

– addSuiteNamed:
– removeSuiteNamed:



●クラスメソッド

standardUserDefaults

+ (NSUserDefaults *)standardUserDefaults

共有のデフォルトオブジェクトを返します。

共有のデフォルトオブジェクトがまだ存在しない場合は、以下のドメインの順序で名前を含むリストを検索して生成します。

NSArgumentDomainで、アプリケーションの引数から解析したデフォルトを構成
・アプリケーションのバンドル識別子でドメインを識別
NSGlobalDomainで、全てのアプリケーションで見られる意味からデフォルトを構成
・各ユーザの優先言語のための別ドメイン
NSRegistrationDomainで、一時的なデフォルトを設定し、アプリケーションによる検索が常に成功するように値を設定

デフォルトは現在のユーザ用に初期化されます。

標準検索リストの後続の変更は、このメソッドが再度呼び出されても残ります。

検索リストはこのメソッドが呼び出された初回のみ、標準で保証されます。

共有インスタンスは、allocとinitWithUser:またはinitを使ってカスタムインスタンスを容易に生成することができます。



●インスタンスメソッド

boolForKey:

- (BOOL)boolForKey:(NSString *)defaultName

指定したキーに対応するBOOL値を返します。

指定したキーが異なる場合はNOを返します。

defaultName:現在のユーザのデフォルトデータベースの中にあるキーを指定します。


floatForKey:

- (float)floatForKey:(NSString *)defaultName

指定したキーに関連付けされている浮動小数点値を返します。

戻り値は指定したキーに関連付けされている浮動小数点値で、指定したキーが存在しない場合には0を返します。

defaultName:現在のユーザのデフォルトデータベース内のキーを指定します。


integerForKey:

- (NSInteger)integerForKey:(NSString *)defaultName

指定したキーに関連付けされている整数値を返します。

戻り値は指定したキーに関連付けされている整数値で、指定したキーが存在しない場合には0を返します。

defaultName:現在のユーザのデフォルトデータベース内のキーを指定します。


objectForKey

- (id)objectForKey:(NSString *)defaultName

デフォルトの中で最初に発見した、指定したキーに対応するオブジェクトを返します。

指定したキーに対応するオブジェクトが無い場合はnilを返します。

このメソッドは検索リストの順でドメインを検索します。

元が可変オブジェクトの場合であっても、戻り値は固定オブジェクトになります。

defaultName:現在のユーザのデフォルトデータベースの中にあるキーを指定します。


registerDefaults:

- (void)registerDefaults:(NSDictionary *)dictionary

登録ドメインに指定された辞書の内容を追加します。

登録ドメインが無い場合、指定した辞書を使って生成され、NSRegistrationDomainで検索リストの末尾に追加されます。

登録ドメインの内容はディスクに書き込まれないので、必要に応じてアプリケーションの開始時にこのメソッドを呼び出してください。

アプリケーションのリソースディレクトリにplistファイルを置くことができ、registerDefaults:を呼び出すことによってファイルから内容を読み込むことができます。

dictionary:キーと値を登録したい辞書を指定します。


setBool:forKey:

- (void)setBool:(BOOL)value forKey:(NSString *)defaultName

指定したBOOL値を対応するキーを指定してデフォルトに設定します。

setObject:forKeyの機能の一部として呼び出します。

value:デフォルトのデータベースへ設定するBOOL値を指定します。

defaultName:BOOL値に対応するキーを設定します。


setFloat:forKey:

- (void)setFloat:(float)value forKey:(NSString *)defaultName

指定した浮動小数点値を対応するキーを指定してデフォルトに設定します。

setObject:forKeyの機能の一部として呼び出します。

value:デフォルトのデータベースへ設定する浮動小数点値を指定します。

defaultName:浮動小数点値に対応するキーを設定します。


setInteger:forKey:

- (void)setInteger:(NSInteger)value forKey:(NSString *)defaultName

指定した整数値を対応するキーを指定してデフォルトに設定します。

setObject:forKeyの機能の一部として呼び出します。

value:デフォルトのデータベースへ設定する整数値を指定します。

defaultName:整数値に対応するキーを設定します。


setObject:forKey:

- (void)setObject:(id)value forKey:(NSString *)defaultName

標準アプリケーションドメイン内の、指定したデフォルトキーの値を設定します。

valueパラメータはプロパティリストオブジェクト(NSData、NSString、NSNumber、NSDate、NSArray、NSDictionary)のみ設定できます。

NSArrayとNSDictionaryオブジェクトの内容はプロパティリストオブジェクトである必要があります。

詳細は『Property List Programming Guide』の『What is Property List?』を参照してください。

検索リスト内のアプリケーションドメインの前に同じキーがドメインに存在する場合、objectForKey:メソッドで返される値はデフォルトの設定に影響を与えません。


stringForKey:

- (NSString *)stringForKey:(NSString *)defaultName

指定したキーに関連付けされている文字列を返します。

戻り値は指定したキーに関連付けされている文字列で、デフォルトが存在しない場合や文字列を含んでいない場合はnilを返します。

返される文字列は不変ですが、元となる値は可変文字列として設定します。

defaultName:現在のユーザのデフォルトデータベース内のキーを指定します。



●定数



●通知



参考文献

NSUserDefaults Class Reference






QuietControl 30 wireless headphones
0 Comments
Leave a comment
管理者にだけ表示を許可する
Top
0 Trackbacks
Top
Calendar
10 | 2017/11 | 12
Sun Mon Tue Wed Thu Fri Sat
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 - -
Recent Articles
iTunes


Swift
Categories
Tips
Profile

水月杏香

Author:水月杏香
永遠の初心者プログラマ。

Wish List
WACOM


ARC
Technical Q&A
情報プロパティリストキー
Start Developing iOS Apps Today
BOSE

QuietControl 30 wireless headphones
Reference
NSApplicationDelegateプロトコル
NSArrayクラス
NSAutoreleasePoolクラス
NSBundleクラス
NSBundle UIKit追加分
NSCalendarクラス
NSCoderクラス
NSCodingプロトコル
NSCopyingプロトコル
NSDataクラス
NSDateクラス
NSDateFormatterクラス
NSDictionaryクラス
NSEntityDescriptionクラス
NSEnumeratorクラス
NSErrorクラス
NSExceptionクラス
NSFetchRequestクラス
NSFileHandleクラス
NSFileManagerクラス
NSIndexPathクラス
NSIndexPath UIKit追加分
NSKeyedArchiverクラス
NSKeyedUnarchiverクラス
NSKeyValueCodingプロトコル
NSLocaleクラス
NSManagedObjectクラス
NSManagedObjectContextクラス
NSManagedObjectModelクラス
NSMutableArrayクラス
NSMutableCopyingプロトコル
NSMutableDictionaryクラス
NSMutableSetクラス
NSNotificationクラス
NSNotificationCenterクラス
NSNullクラス
NSNumberクラス
NSObjectクラス
NSObject UIKit追加分
NSObjectプロトコル
NSPersistentStoreクラス
NSPersistentStoreCoordinatorクラス
NSPredicateクラス
NSPropertyListSerializationクラス
NSRunLoopクラス
NSSetクラス
NSStringクラス
NSString UIKit追加分
NSTimerクラス
NSTimeZoneクラス
NSURLクラス
NSURLProtectionSpaceクラス
NSURLRequestクラス
NSUserDefaultsクラス
NSValueクラス

UIActionSheetクラス
UIActionSheetDelegateプロトコル
UIActivityIndicatorViewクラス
UIAlertViewクラス
UIAlertViewDelegateプロトコル
UIApplicationクラス
UIApplicationDelegateプロトコル
UIBarButtonItemクラス
UIBarItemクラス
UIButtonクラス
UIColorクラス
UIControlクラス
UIDatePickerクラス
UIDeviceクラス
UIEventクラス
UIFontクラス
UIGestureRecognizerクラス
UIImageクラス
UIImageViewクラス
UIKit Function
UILabelクラス
UINavigationControllerクラス
UINavigationItemクラス
UIPickerViewクラス
UIPickerViewDataSourceプロトコル
UIPickerViewDelegateプロトコル
UIPinchGestureRecognizerクラス
UIResponderクラス
UIScreenクラス
UIScrollViewクラス
UISearchBarクラス
UISearchBarDelegateプロトコル
UISegmentedControlクラス
UISliderクラス
UISwipeGestureRecognizerクラス
UISwitchクラス
UITableViewクラス
UITableViewCellクラス
UITableViewControllerクラス
UITableViewDataSourceプロトコル
UITableViewDelegateプロトコル
UITapGestureRecognizerクラス
UITextFieldクラス
UITextFieldDelegateプロトコル
UITextInputTraitsプロトコル
UITextViewクラス
UITextViewDelegateプロトコル
UIToolbarクラス
UITouchクラス
UIViewクラス
UIViewControllerクラス
UIWebViewクラス
UIWebViewDelegateプロトコル
UIWindowクラス

AVAudioPlayerクラス
AVAudioPlayerDelegateプロトコル

CADisplayLinkクラス
CAEAGLLayerクラス
CALayerクラス

CGAffineTransform
CGBitmapContext
CGColor
CGColorSpace
CGContext
CGGeometry
CGImage
CGPath

EAGLContextクラス
EAGLDrawableプロトコル

Foundation Constants
Foundation Data Types
Foundation Functions

MPMediaItemクラス
MPMediaItemArtworkクラス
MPMediaPlaylistクラス
MPMediaPropertyPredicateクラス
MPMediaQueryクラス
MPMusicPlayerControllerクラス

Randomization Services

System Sound Services
Amazon


OpenGL ES
SQLite
Monthly Archives
Recent Comments
Recent TrackBacks
RSS Link
Visitors
QR Code
QR