2010年5月18日火曜日

設定をファイルに保存

アプリケーションの設定をファイルに保存するには、NSUserDefaultsクラスを使用します。


    // NSUserDefaultsのインスタンス取得
    NSUserDefaults* defaults = [ NSUserDefaults standardUserDefaults ];
   
    // 設定された文字列を登録
    [ defaults setObject: @"設定値" forKey: @"SET1" ];
  
    // 設定された数値を登録
    [ defaults setInteger: 100 forKey: @"SET2" ];


standardUserDefaultsメソッドでNSUserDefaultsクラスのインスタンスを生成し、setObjectやsetIntegerメソッドでそれぞれの設定値を登録します。1番目の引数が保存する値で、2番目の引数が後で読み出す時にキーとなる値です。

保存ファイルは、アプリケーションをインストールしたフォルダのLibrary/Preferencesフォルダに「com.yourcompany.アプリケーション名.plist」というファイル名で保存されます。中身はXMLファイルです。


設定ファイルを読み出す時は、アプリケーション起動後のawakeFromNibメソッド等で以下のようにします。

    // デフォルト値を作成
    NSDictionary* defDic = [ NSDictionary dictionaryWithObjectsAndKeys:
                            @"設定値デフォルト", @"SET1"
                            , [ NSNumber numberWithInt: 100 ], @"SET2"
                            , nil ];
   
    // NSUserDefaultsのインスタンス取得と読み込み
    NSUserDefaults* defaults = [ NSUserDefaults standardUserDefaults ];
   
    // デフォルト値をNSUserDefaultsに設定
    [ defaults registerDefaults:defDic ];
   
    // 読み込んだ設定値のテキストを取得
    NSString* strSet1 = [ defaults stringForKey: @"SET1" ];
   
    // 読み込んだ設定値の数値を取得
    NSInteger nSet2 = [ defaults integerForKey: @"SET2" ];


NSDictionaryというのは、アプリケーションの初回起動時には設定ファイルが存在しないので、その場合のデフォルト値を設定する為に使用しています。上記の例では、SET1というキーに設定値デフォルト、SET2には数値の100をデフォルト値として指定しています。
その後、NSUserDefaultsクラスのregisterDefaultsメソッドでNSDictionaryを設定しています。

後は、SET1のキーに該当する値は文字列なので、文字列を読み出すstringForKeyメソッド、SET2のキーに該当する値は数値なので、数値を読み出すintegerForKeyメソッドを呼出します。これで、デフォルト値か、前回保存した設定値を読み出すことができます。

0 件のコメント:

コメントを投稿