LoginSignup
0
1

More than 1 year has passed since last update.

【Objective-C】NSUserDefaultsについて

Last updated at Posted at 2020-04-29

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を削除する

参考

0
1
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1