2

重複の可能性:
複数値タイプの設定バンドルフィールドは常にnullを返します

iOSアプリに設定バンドルがあり、設定 アプリで次のテーブルが生成されます

私のアプリでは、NSUserDefaultsを使用して同じテーブルを生成しようとすると、これで終わります

値を取得するための私のコードは次のとおりです。

NSUserDefaults* userDefaults = [NSUserDefaults standardUserDefaults];
ds->use_cache = [userDefaults boolForKey:@"use_cache"];
ds->high_bitrate = [userDefaults boolForKey:@"high_bitrate"];

NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
[[cell detailTextLabel] setText:[defaults stringForKey:@"version"]];

キー「version」を持つstringForKeyは、常にnull値を返します。設定バンドルで定義したデフォルトのパラメーターをアプリに認識させられないようです。

これが私の設定バンドルです

4

1 に答える 1

3

registerDefaults:設定のデフォルト値は、メソッドを使用して設定する必要があります。これにより、NSRegistrationDomainそれらを使用できるようになります。この例を以下に示します。以前にhttp://greghaygood.com/2009/03/09/updating-nsuserdefaults-from-settingsbundleを参照していた私の最初の回答の問題を指摘してくれたjrturton&MatthiasBauchに感謝します。

NSDictionary *appDefaults = [ NSDictionary
                              dictionaryWithObject:@"default_version_value" forKey:@"version" ];

[ [ NSUserDefaults standardUserDefaults ] registerDefaults:appDefaults ];

NSUserDefaults *userDefaults = [ NSUserDefaults standardUserDefaults ];

また、これらのデフォルト値は、のドキュメントに記載されているように、アプリケーションを起動するたびに設定する必要があることに注意してくださいregisterDefaults:

登録ドメインの内容はディスクに書き込まれません。アプリケーションが起動するたびにこのメソッドを呼び出す必要があります。アプリケーションのResourcesディレクトリにplistファイルを配置し、そのファイルから読み込んだ内容でregisterDefaults:を呼び出すことができます。

于 2012-11-18T08:00:11.487 に答える