NSUserDefaultsクラス
解説
継承 | NSObject |
準拠 | NSObject (NSObject) |
フレームワーク | /System/Library/Frameworks/Foundation.framework |
使用可能 | OS X 10.0以降 |
iOS 2.0以降 | |
定義 | NSUserDefaults.h |
概要
アプリケーションの設定値を保存したり呼び出したりできるクラスです。暗号化されていませんのでパスワードなどを保存するのはおすすめできません。キーチェーンに保存するなどの扱いが必要です。
ユーザーデフォルトには永続性ドメイン(Persistent Domains)と揮発性ドメイン(Volatile Domains)と呼ばれる2種類があり、アプリケーションの終了で保存されるかどうかの違いとなります。
ユーザーデフォルト(NSUserDefaults)の共有インスタンスを取得
ユーザーデフォルト(NSUserDefaults)の共有インスタンスの取得は(+ standardUserDefaults)メソッドを使用します。
一旦同期させてから、オブジェクトをリセットするには(+ resetStandardUserDefaults)を使用します。
ユーザーデフォルトオブジェクトの初期化
ユーザーデフォルトの初期化は(– init)メソッドを使用します。
デフォルトの登録
デフォルト値を登録するには(– registerDefaults)メソッドを使用します。
+ (void)initialize{ NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; NSDictionary *appDefaults = [NSDictionary dictionaryWithObject:@"default value" forKey:@"KEY0"]; [defaults registerDefaults:appDefaults]; }
値を取得
ユーザーデフォルトからキーでオブジェクトを配列(NSArray)として取り出すには(– arrayForKey)メソッドを使用します。
ユーザーデフォルトからキーでBOOL値として取り出すには(– boolForKey)メソッドを使用します。
ユーザーデフォルトからキーでオブジェクトをデータ(NSData)として取り出すには(– dataForKey)メソッドを使用します。
ユーザーデフォルトからキーでオブジェクトを辞書(NSDictionary)として取り出すには(– dictionaryForKey)メソッドを使用します。
ユーザーデフォルトからキーでオブジェクトをfloat値として取り出すには(– floatForKey)メソッドを使用します。
ユーザーデフォルトからキーで整数値(NSInteger)として取り出すには(– integerForKey)メソッドを使用します。
ユーザーデフォルトからキーでオブジェクトを取り出すには(– objectForKey)メソッドを使用します。
ユーザーデフォルトからキーで文字列の配列(NSArray)として取り出すには(– stringArrayForKey)メソッドを使用します。
ユーザーデフォルトからキーで文字列の配列(NSArray)として取り出すには(– stringForKey)メソッドを使用します。
ユーザーデフォルトからキーでdouble値として取り出すには(– doubleForKey)メソッドを使用します。
ユーザーデフォルトからキーでURLオブジェクト(NSURL)として取り出すには(– URLForKey)メソッドを使用します。
各種値の設定・取得のサンプル
-(void)method004 { NSUserDefaults* defaults = [[NSUserDefaults alloc] init]; [defaults setObject:@"string" forKey:@"KEY1"]; NSLog(@"synchronize %@",([defaults synchronize])?@"OK":@"NG"); NSLog(@"%s %@",__FUNCTION__,[defaults description]); NSLog(@"%s %@",__FUNCTION__,[defaults objectForKey:@"KEY0"]); NSLog(@"%s %@",__FUNCTION__,[defaults objectForKey:@"KEY1"]); [defaults setBool:YES forKey:@"boolKey"]; [defaults setFloat:10.2f forKey:@"floatKey"]; [defaults setInteger:10 forKey:@"integerKey"]; [defaults setDouble:9000000000 forKey:@"doubleKey"]; [defaults setURL:[NSURL URLWithString:@"http://www.apple.com"] forKey:@"urlKey"]; NSArray *array = [NSArray arrayWithObjects:@"aaa",@"bbb",[NSNumber numberWithInt:3], nil ]; [defaults setObject:array forKey:@"arrayKey"]; NSDictionary *aDic = [NSDictionary dictionaryWithObjectsAndKeys:@"aaa",@"key1",@"bbb",@"key2",@"ccc",@"key3", nil]; [defaults setObject:aDic forKey:@"dictionaryKey"]; BOOL boolValue = [defaults boolForKey:@"boolKey"]; NSLog(@"%s %@",__FUNCTION__,(boolValue)?@"YES":@"NO"); float floatValue = [defaults floatForKey:@"floatKey"]; NSLog(@"%s %f",__FUNCTION__,floatValue); NSInteger integerValue = [defaults integerForKey:@"integerKey"]; NSLog(@"%s %d",__FUNCTION__,integerValue); double doubleValue = [defaults doubleForKey:@"doubleKey"]; NSLog(@"%s %f",__FUNCTION__,doubleValue); NSURL *bURL = [defaults URLForKey:@"urlKey"]; NSLog(@"%s %@",__FUNCTION__,[bURL host]); NSArray *bArray = [defaults arrayForKey:@"arrayKey"]; NSLog(@"%s %@",__FUNCTION__,bArray); NSDictionary *bDic = [defaults dictionaryForKey:@"dictionaryKey"]; NSLog(@"%s %@",__FUNCTION__,bDic); }
値をセット
ユーザーデフォルトに指定したキーでBOOL値をセットするには(– setBool:forKey)メソッドを使用します。
ユーザーデフォルトに指定したキーでfloat値をセットするには(– setFloat:forKey)メソッドを使用します。
ユーザーデフォルトに指定したキーでNSInteger値をセットするには(– setInteger:forKey)メソッドを使用します。
ユーザーデフォルトに指定したキーでオブジェクトをセットするには(– setObject:forKey)メソッドを使用します。NSArrayやNSDictionary、NSDataなどもこのメソッドを使用します。
ユーザーデフォルトに指定したキーでdouble値をセットするには(– setDouble:forKey)メソッドを使用します。
ユーザーデフォルトに指定したキーでURLをセットするには(– setURL:forKey)メソッドを使用します。
値を取り除く
ユーザーデフォルトから指定したキーで値を取り除くには(– removeObjectForKey)メソッドを使用します。
永続性ドメインのメンテナンス
同期するには(– synchronize)メソッドを使用します。
指定した名前で永続性ドメインの辞書を取得するには(– persistentDomainForName: )メソッドを使用します。
永続性ドメイン名の一覧を表示するには(– persistentDomainNames)メソッドを使用します。
指定した名前で削除するには(– removePersistentDomainForName: )メソッドを使用します。
指定したドメインに値をセットするには(– setPersistentDomain:forName)メソッドを使用します。
環境変数にアクセス
指定したキーが管理者によって管理されているかどうかを取得するには(– objectIsForcedForKey)メソッドを使用します。領域を指定することができるメソッド(– objectIsForcedForKey:inDomain: )もあります。
検索リストにアクセス
検索リストを辞書で得るには(– dictionaryRepresentation)メソッドを使用します。
揮発性のドメインの管理
ユーザーデフォルトから揮発性ドメインを削除するには(– removeVolatileDomainForName)メソッドを使用します。揮発性ドメインにセットするには(– setVolatileDomain:forName: )メソッドを使用します。
揮発性ドメインの名前を取得するには(– volatileDomainNames)メソッドを使用します。指定した揮発性ドメインの値を取得するには(– volatileDomainForName: )メソッドを使用します。
スイートのメンテナンス
サンドボックスアプリケーションで複数アプリケーション間で設定を共有する場合に使用するスイート名を追加するには(– addSuiteNamed)メソッドを使用します。スイート名を取り除くには(– removeSuiteNamed: )メソッドを使用します。
適合するプロトコル
メソッド
共有NSUserDefaultsインスタンスの取得
NSUserDefaultsオブジェクトの初期化
デフォルトの登録
デフォルト値の取得
– arrayForKey – boolForKey – dataForKey – dictionaryForKey – floatForKey – integerForKey – objectForKey – stringArrayForKey
- stringForKey
– doubleForKey
– URLForKey
デフォルト値の設定
– setBool:forKey – setFloat:forKey – setInteger:forKey – setObject:forKey
– setDouble:forKey
– setURL:forKey
デフォルトを取り除く
永続性ドメインの管理
– synchronize – persistentDomainForName – persistentDomainNames – removePersistentDomainForName – setPersistentDomain:forName
Accessing Managed Environment Keys
検索リストの管理
揮発性ドメインの管理
– removeVolatileDomainForName – setVolatileDomain:forName – volatileDomainForName – volatileDomainNames