libro
www.tuyano.com
初心者のためのObjective-Cプログラミング入門

NSUserDefaults/NSCodingによる設定情報の保存 (1/8)

作成:2013-03-25 08:13
更新:2013-03-25 08:13

■NSUserDefaultsの基本を覚えよう!

古くからMac OS Xを使っている人ならば、アプリの設定情報が「ライブラリ」というところに保管されていることをご存知でしょう。今ではこのフォルダが隠されてしまっているので知らない人も増えていますが、Finderで<移動>メニューの<フォルダへ移動>を選び、フォルダの場所に「~/Library」と書いて実行すれば、非表示の「ライブラリ」フォルダに移動することができます。この中の「Preferences」というフォルダの中に設定ファイルは保管されます。iOSの場合も仕組みとしては同じで、アプリの設定情報はそのためのディレクトリに保存されています。

これら「アプリの設定情報」の読み書きに関する機能を提供するのが「NSUserDefaults」というクラスです。このクラスの基本的な使い方がわかれば、アプリごとにさまざまな情報を簡単に保存しておくことができるようになります。


●インスタンスの用意
NSUserDefaults* 変数 = [NSUserDefaults standardUserDefaults];
まずは、インスタンスを取得します。これはallocなどで新たに作るのではなく、あらかじめ用意されているstandardUserDefaultsメソッドを呼び出して取り出します。


●値の書き出し
[《NSUserDefaults》 setBool:《BOOL》 forKey: キー ];
[《NSUserDefaults》 setFloat:《float》 forKey: キー ];
[《NSUserDefaults》 setDouble:《double》 forKey: キー ];
[《NSUserDefaults》 setInteger:《NSInteger》 forKey: キー ];
[《NSUserDefaults》 setURL:《NSURL》 forKey: キー ];
[《NSUserDefaults》 setObject:オブジェクト forKey: キー ];
値の書き出しには6種類のメソッドが用意されています。真偽値、実数、整数、URLといったものは専用のメソッドを使って保存します。NSUserDefaultsでは、それぞれの値は「キー」と呼ばれる名前をつけて保管されます。これはNSDictionaryなどと同じような感覚で考えればよいでしょう。set○○:に保存する値を指定し、forKey:にその値につける名前をNSStringで指定して実行すれば、その名前で値が保存されます。

基本的な値については専用メソッドを利用しますが、専用メソッドが用意されていないクラスについては、すべてsetObject:でオブジェクトとして保存します。ただし! これらのメソッドはNSUserDefaults内にデータが追加されただけで、まだファイルには保存されてはいません。


●値の読み込み
BOOL 変数 = [《NSUserDefaults》 boolForKey: キー ];
float 変数 = [《NSUserDefaults》 floatForKey: キー ];
double 変数 = [《NSUserDefaults》 doubleForKey: キー ];
NSInteger 変数 = [《NSUserDefaults》 integerlForKey: キー ];
NSString* 変数 = [《NSUserDefaults》 stringForKey: キー ];
NSArray* 変数 = [《NSUserDefaults》 arrayForKey: キー ];
NSDictionary* 変数 = [《NSUserDefaults》 dictionaryForKey: キー ];
NSData* 変数 = [《NSUserDefaults》 dataForKey: キー ];
NSURL* 変数 = [《NSUserDefaults》 urlForKey: キー ];
id 変数 = [《NSUserDefaults》 objectForKey: キー ];
値の読み込みは、書き出しと比べるとメソッド数が増えています。NSStringNSArrayNSDictionaryNSDataといったものは、保存はsetObject: forKey:でオブジェクトとして保存しますが、取り出す際にはそれぞれ専用のメソッドを利用して取り出すことになります。


それ以外のオブジェクトは、objectForKey:を使いid型変数に取り出し利用をします。基本型の値(数値、真偽値)と基本的なオブジェクト(文字列、配列、辞書など)が使えれば、それでたいていの値は取り出せますから、他の種類の値を読み書きすることはそれほど多くはないでしょう。


●NSUserDefaultsの更新
[《NSUserDefaults》synchronize];
設定ファイルにNSUserDefaultsの内容を書き出し保存します。これを実行しないとNSUserDefaultsの情報はファイルに残されないので注意しましょう。


――以上の「インスタンス作成」「設定の追加」「設定の取り出し」「設定情報の更新」という4つの操作がわかれば、設定ファイルは使えるようになります。意外と簡単ですね!

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

※関連コンテンツ

「初心者のためのObjective-Cプログラミング入門」に戻る