6

単一の設定値、デフォルト値のテキストフィールドを使用して設定バンドルを作成しました。

アプリケーションを起動して値を取得すると、nullになります。ユーザーが値を指定する前に、使用する値を手動でコーディングする必要がありますか?

また、ユーザーが設定画面に移動してテキストフィールドに入力し、変更せずにそのままにしておくと、値は設定されません...ユーザーは実際に値を変更して保存する必要がありますが、これは正しいですか?

4

3 に答える 3

4

いいえ、そうしないでください。

これには関数があります:

id userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults registerDefaults: defaultSettings];

PreferenceSpecifiers設定ファイルのすべてのサブキーを反復することで、パラメーターを作成できplistます。

このようなもの:

- (NSDictionary *)readDefaultSettingsFromPlist: (NSString *)inPath;
{
    id mutable = [NSMutableDictionary dictionary];
    id settings = [NSDictionary dictionaryWithContentsOfFile: inPath];
    id specifiers = [settings objectForKey: @"PreferenceSpecifiers"];
    for (id prefItem in specifiers) {
        id key = [prefItem objectForKey: @"Key"];
        id value = [prefItem objectForKey: @"DefaultValue"];
        if ( key && value ) {
            [mutable setObject: value
                        forKey: key];
        }
    }
    return [NSDictionary dictionaryWithDictionary: mutable];
}
于 2011-06-08T02:30:00.397 に答える
1

デフォルト値は設定アプリに表示されているようですが、NSUserDefaults standardUserDefaults に自動的に保存されません。したがって、nil 値を見つけた場合は、デフォルト値を明示的に設定する必要があります。

このようなもの:

+ (NSString *)userDefaultStringForKey:(NSString *)key defaultValue:(NSString *)def {
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    NSString *val = [defaults stringForKey:key];
    if (val == nil && def != nil) {
        val = def;
        [defaults setObject:val forKey:key];
    }
    return val;
}
于 2011-05-16T09:48:23.003 に答える
1

キーに null を取得している場合は、アプリをチェックインして、独自のデフォルト値を使用できます。

于 2011-04-12T06:21:21.830 に答える