NSUserDefaults
NSUserDefaults簡単に言うとキーバリュー型のDB(データベース)にアクセスするために用いるもので、これを用いることで、アプリの起動時にキーと値のペアを永続的に保存することができます。その他の特徴を下記に記しておきます。
・< Key, Value >形式の辞書型でアクセス可能。
・各iOSアプリは、1端末に対して1つのNSUserDefaultsを保持している。
・アプリを削除するとNSUserDefaultsも消えるため、同じアプリを再インストールしてもNSUserDefaultsはリセットされる。
NSUserDefaultsは以上のような特徴を持っていて、主な使用目的としてはユーザーの設定情報(Preferences)を永続的に保存することが目的として挙げられます。
生成方法
NSUserDefaultsを生成する為には、以下のコードで生成します。
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
サンプルコード
値を登録(保存)
下記のコードではNSUserDefaultsを取得した後、NSMutableDictionaryを取得し、key-value形式で配列に値を入れて行っています。その後配列をregisterDefaultsで登録することによって、NSUserDefaultsへの値の保存が完了します。
NSUserDefaults *test = [NSUserDefaults standardUserDefaults]; // 取得
NSMutableDictionary *defaults = [NSMutableDictionary dictionary];
[defaults setObject:@"99" forKey:@"KEY_I"];
[defaults setObject:@"99.99" forKey:@"KEY_F"];
[defaults setObject:@"88.88" forKey:@"KEY_D"];
[defaults setObject:@"YES" forKey:@"KEY_B"];
[defaults setObject:@"hoge" forKey:@"KEY_S"];
//registerDefaultsで登録
[ud registerDefaults:defaults];
値の更新
下記のコードでは、NSUserDefaultsに対して値の更新処理を行っています。
値を更新するときは、そのKEYの型に合わせて整数ならsetInteger、flost型ならsetFloatなどで値を更新していきます。
そして最後にsynchronizeを叩くことで、NSUserDefaultsに更新した値を即座に反映させることができます。
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults]; // 取得
[ud setInteger:100 forKey:@"KEY_I"];
[ud setFloat:1.23 forKey:@"KEY_F"];
[ud setDouble:1.23 forKey:@"KEY_D"];
[ud setBool:YES forKey:@"KEY_B"];
[ud setObject:@"あいう" forKey:@"KEY_S"];
//現在は不要
//[ud synchronize]; NSUserDefaultsに即時反映させる(即時で無くてもよい場合は不要)
値の取得
値の取得は下記コードのように**[NSUserDefaults 型名forKey:@"キー名"**でvalueを取得し、それを変数などに代入してあげることで取得が可能です。
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults]; // 取得
int i = [ud integerForKey:@"KEY_I"]; // KEY_Iの内容をint型として取得
float f = [ud floatForKey:@"KEY_F"]; // KEY_Fの内容をfloat型として取得
double d = [ud doubleForKey:@"KEY_D"]; // KEY_Dの内容をdouble型として取得
BOOL b = [ud boolForKey:@"KEY_B"]; // KEY_Bの内容をBOOL型として取得
NSString s = [ud stringForKey:@"KEY_S"]; // KEY_Sの内容をNSString型として取得
値の削除
値の削除は**[NSUserDefaults removeObjectForKey:@"キー名"];**でキーを削除することによって、削除が完了します。
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults]; // 取得
[ud removeObjectForKey:@"KEY_I"]; // KEY_Iを削除する
参考