技術ブログ

プログラミング、IT関連の記事中心

NSUserDefaultsの基礎【Objective-C】

◾️はじめに

アプリを作成していると、データを保存しておきたい時が多々あります。
(一例を挙げると、「設定」の値など)

そのような場合に、色々とデータを保存する方法はありますが、今回は「NSUserDefaults」に関して記載します。
ちなみに、NSUserDefaultsはアプリの保存ディレクトリに「plist」形式のファイルとして保持されます。

◾️データの保存、更新

ここでは、NSUserDefaultsへのデータの保存方法を記載します。
データの保存は、key,value形式で保存されます。

既に対象のキーでデータが保存されている場合は、上書きで更新されるので注意してください。

以下にデータの保存のサンプルを記載します。

// NSUserDefaultsのインスタンスを作成
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
// NSString型の「test」を「string_key」のキーに保存
[ud setObject:@"test" forKey:@"string_key"];
// int型の「1」を「int_key」のキーに保存
[ud setInteger:100 forKey:@"int_key"];
// float型の「1.1」を「float_key」のキーに保存
[ud setFloat:1.1 forKey:@"float_key"];
// double型の「1.1」を「double_key」のキーに保存
[ud setDouble:1.1 forKey:@"double_key"];
// BOOL型の「YES」を「bool_key」のキーに保存
[ud setBool:YES forKey:@"bool_key"];
// 保存内容を即時で反映する為に、同期する(この記載がない場合には、即時反映されない)
[ud synchronize];

◾️データの取得

ここでは、NSUserDefaultsのデータの取得方法を記載します。
データの保存で記載したキーを元にデータを取得します。

以下にデータの取得のサンプルを記載します。

// NSUserDefaultsのインスタンスを作成
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
// 「string_key」キーの値を取得(NSString型)
NSString s = [ud stringForKey:@"string_key"];
// 「int_key」キーの値を取得(int型)
int i = [ud integerForKey:@"int_key"];
// 「float_key」キーの値を取得(float型)
float f = [ud floatForKey:@"float_key"];
// 「double_key」キーの値を取得(double型)
double d = [ud doubleForKey:@"double_key"];
// 「bool_key」キーの値を取得(BOOL型)
BOOL b = [ud boolForKey:@"bool_key"];

◾️データの削除

ここでは、NSUserDefaultsのデータの削除方法を記載します。
データの保存で記載したキーを元にデータを削除します。

以下にデータの削除のサンプルを記載します。

// NSUserDefaultsのインスタンスを作成
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
// 「string_key」キーの値を削除(NSString型)
[ud removeObjectForKey:@"string_key"];
// 「int_key」キーの値を削除(int型)
[ud removeObjectForKey:@"int_key"];
// 「float_key」キーの値を削除(float型)
[ud removeObjectForKey:@"float_key"];
// 「double_key」キーの値を削除(double型)
[ud removeObjectForKey:@"double_key"];
// 「bool_key」キーの値を削除(BOOL型)
[ud removeObjectForKey:@"bool_key"];

◾️キーの存在チェック

NSUserDefaultsのキーの存在チェック

ここでは、NSUserDefaultsのキーが存在するかどうかのチェック方法を記載します。

以下にキーが存在するかどうかのチェック方法のサンプルを記載します。

// NSUserDefaultsのインスタンスを作成
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
// 「TargetKey」キーが存在するかどうかを判定する
if([[[ud dictionaryRepresentation] allKeys] containsObject:@"TargetKey"]){
    // キーが存在する場合
} else {
    // キーが存在しない場合
}