macOS/iOS API解説

iOS , Mac アプリケーション開発のために使われる主要フレームワークの日本語情報です。2010年代に書かれた内容です。今後更新はありません。

目次

NSUserDefaultsクラス

INDEX>Foundation>

apple(OS X)apple(iOS)

解説

継承 NSObject
準拠 NSObject (NSObject)
フレームワーク /System/Library/Frameworks/Foundation.framework
使用可能 OS X 10.0以降
iOS 2.0以降
定義 NSUserDefaults.h

概要

アプリケーションの設定値を保存したり呼び出したりできるクラスです。暗号化されていませんのでパスワードなどを保存するのはおすすめできません。キーチェーンに保存するなどの扱いが必要です。
ユーザーデフォルトには永続性ドメイン(Persistent Domains)と揮発性ドメイン(Volatile Domains)と呼ばれる2種類があり、アプリケーションの終了で保存されるかどうかの違いとなります。

ユーザーデフォルト(NSUserDefaults)の共有インスタンスを取得

ユーザーデフォルト(NSUserDefaults)の共有インスタンスの取得は(+ standardUserDefaults)メソッドを使用します。
一旦同期させてから、オブジェクトをリセットするには(+ resetStandardUserDefaults)を使用します。

ユーザーデフォルトオブジェクトの初期化

ユーザーデフォルトの初期化は(– init)メソッドを使用します。

デフォルトの登録

デフォルト値を登録するには(– registerDefaults)メソッドを使用します。

+ (void)initialize{
 
 NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
 NSDictionary *appDefaults = [NSDictionary
                              dictionaryWithObject:@"default value" forKey:@"KEY0"];
 
 [defaults registerDefaults:appDefaults];
}

値を取得

ユーザーデフォルトからキーでオブジェクトを配列(NSArray)として取り出すには(– arrayForKey)メソッドを使用します。
ユーザーデフォルトからキーでBOOL値として取り出すには(– boolForKey)メソッドを使用します。
ユーザーデフォルトからキーでオブジェクトをデータ(NSData)として取り出すには(– dataForKey)メソッドを使用します。
ユーザーデフォルトからキーでオブジェクトを辞書(NSDictionary)として取り出すには(– dictionaryForKey)メソッドを使用します。
ユーザーデフォルトからキーでオブジェクトをfloat値として取り出すには(– floatForKey)メソッドを使用します。
ユーザーデフォルトからキーで整数値(NSInteger)として取り出すには(– integerForKey)メソッドを使用します。
ユーザーデフォルトからキーでオブジェクトを取り出すには(– objectForKey)メソッドを使用します。
ユーザーデフォルトからキーで文字列の配列(NSArray)として取り出すには(– stringArrayForKey)メソッドを使用します。
ユーザーデフォルトからキーで文字列の配列(NSArray)として取り出すには(– stringForKey)メソッドを使用します。
ユーザーデフォルトからキーでdouble値として取り出すには(– doubleForKey)メソッドを使用します。
ユーザーデフォルトからキーでURLオブジェクト(NSURL)として取り出すには(– URLForKey)メソッドを使用します。

各種値の設定・取得のサンプル

-(void)method004
{
    NSUserDefaults* defaults = [[NSUserDefaults alloc] init];
    
    [defaults setObject:@"string" forKey:@"KEY1"];
    
    NSLog(@"synchronize %@",([defaults synchronize])?@"OK":@"NG");
    NSLog(@"%s %@",__FUNCTION__,[defaults description]);
    NSLog(@"%s %@",__FUNCTION__,[defaults objectForKey:@"KEY0"]);
    NSLog(@"%s %@",__FUNCTION__,[defaults objectForKey:@"KEY1"]);
    
    [defaults setBool:YES forKey:@"boolKey"];
    [defaults setFloat:10.2f forKey:@"floatKey"];
    [defaults setInteger:10 forKey:@"integerKey"];
    [defaults setDouble:9000000000 forKey:@"doubleKey"];
    [defaults setURL:[NSURL URLWithString:@"http://www.apple.com"] forKey:@"urlKey"];
    NSArray *array = [NSArray arrayWithObjects:@"aaa",@"bbb",[NSNumber numberWithInt:3], nil ];
    [defaults setObject:array forKey:@"arrayKey"];
    
    NSDictionary *aDic = [NSDictionary dictionaryWithObjectsAndKeys:@"aaa",@"key1",@"bbb",@"key2",@"ccc",@"key3", nil];
    [defaults setObject:aDic forKey:@"dictionaryKey"];
    
    BOOL boolValue = [defaults boolForKey:@"boolKey"];
    NSLog(@"%s %@",__FUNCTION__,(boolValue)?@"YES":@"NO");
    
    float floatValue = [defaults floatForKey:@"floatKey"];
    NSLog(@"%s %f",__FUNCTION__,floatValue);
    
    NSInteger integerValue = [defaults integerForKey:@"integerKey"];
    NSLog(@"%s %d",__FUNCTION__,integerValue);
    
    double doubleValue = [defaults doubleForKey:@"doubleKey"];
    NSLog(@"%s %f",__FUNCTION__,doubleValue);
    
    NSURL *bURL = [defaults URLForKey:@"urlKey"];
    NSLog(@"%s %@",__FUNCTION__,[bURL host]);
    
    NSArray *bArray = [defaults arrayForKey:@"arrayKey"];
    NSLog(@"%s %@",__FUNCTION__,bArray);
    
    NSDictionary *bDic = [defaults dictionaryForKey:@"dictionaryKey"];
    NSLog(@"%s %@",__FUNCTION__,bDic);
}

値をセット

ユーザーデフォルトに指定したキーでBOOL値をセットするには(– setBool:forKey)メソッドを使用します。
ユーザーデフォルトに指定したキーでfloat値をセットするには(– setFloat:forKey)メソッドを使用します。
ユーザーデフォルトに指定したキーでNSInteger値をセットするには(– setInteger:forKey)メソッドを使用します。
ユーザーデフォルトに指定したキーでオブジェクトをセットするには(– setObject:forKey)メソッドを使用します。NSArrayやNSDictionary、NSDataなどもこのメソッドを使用します。
ユーザーデフォルトに指定したキーでdouble値をセットするには(– setDouble:forKey)メソッドを使用します。
ユーザーデフォルトに指定したキーでURLをセットするには(– setURL:forKey)メソッドを使用します。

値を取り除く

ユーザーデフォルトから指定したキーで値を取り除くには(– removeObjectForKey)メソッドを使用します。

永続性ドメインのメンテナンス

同期するには(– synchronize)メソッドを使用します。

指定した名前で永続性ドメインの辞書を取得するには(– persistentDomainForName: )メソッドを使用します。
永続性ドメイン名の一覧を表示するには(– persistentDomainNames)メソッドを使用します。
指定した名前で削除するには(– removePersistentDomainForName: )メソッドを使用します。
指定したドメインに値をセットするには(– setPersistentDomain:forName)メソッドを使用します。

環境変数にアクセス

指定したキーが管理者によって管理されているかどうかを取得するには(– objectIsForcedForKey)メソッドを使用します。領域を指定することができるメソッド(– objectIsForcedForKey:inDomain: )もあります。

検索リストにアクセス

検索リストを辞書で得るには(– dictionaryRepresentation)メソッドを使用します。

揮発性のドメインの管理

ユーザーデフォルトから揮発性ドメインを削除するには(– removeVolatileDomainForName)メソッドを使用します。揮発性ドメインにセットするには(– setVolatileDomain:forName: )メソッドを使用します。
揮発性ドメインの名前を取得するには(– volatileDomainNames)メソッドを使用します。指定した揮発性ドメインの値を取得するには(– volatileDomainForName: )メソッドを使用します。

スイートのメンテナンス

サンドボックスアプリケーションで複数アプリケーション間で設定を共有する場合に使用するスイート名を追加するには(– addSuiteNamed)メソッドを使用します。スイート名を取り除くには(– removeSuiteNamed: )メソッドを使用します。

適合するプロトコル