0

最新の SDK を使用して iOS アプリを開発しています。

と別の 4 つを作成しましたSettings.bundleが、これらのファイルのすべての設定にはそれぞれデフォルト値があります。Root.plist.plist

一緒に仕事をするのはこれが初めてで、Settings.bundle迷っています。アプリケーションを実行するたびにデフォルト値を読み取る必要があると彼らが言ったこの質問を見つけましたが、その理由がわかりません。Settings.bundle

NSUserDefaults設定値を読み取るには、ここを使い続ける必要があると思います。

これらの質問があります:

  1. 設定アプリを使用して、これらの設定に設定された値を読み取るにはどうすればよいですか?
  2. ユーザーがこれらの値の 1 つ以上を変更したかどうかを知るにはどうすればよいですか? ユーザーはアプリをバックグラウンドにし、設定アプリを開いて何かを変更します。プログラムでそれを知るにはどうすればよいですか?
  3. 変更 (設定値の変更) を保存して、設定アプリでその変更を確認するにはどうすればよいですか?

ところで、今私はこのコードを持っています:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // Override point for customization after application launch.

    // Set the application defaults
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    if (![defaults boolForKey:@"firstRun"])
    {
        NSDictionary *appDefaults = [PreferenceDefaultValues dictionary];
        [defaults registerDefaults:appDefaults];

        [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"firstRun"];

        [defaults synchronize];
    }

    return YES;
}
4

1 に答える 1

3
  1. Settings.bundle plistのidentifier任意の設定項目には、 でアクセスできますNSUserDefaults。たとえば、 という名前の識別子を持つ基本設定項目があるallowDiagnostics場合、その項目の値にアクセスできます[NSUserDefaults standardUserDefaults] boolForKey:@"allowDiagnostics"](それが項目であると仮定しBOOLます)。

  2. を使用しNSUserDefaultsDidChangeNotificationて、設定に変更があった場合に通知を受け取ることができます。

  3. あなたがそれらを読むのと同じ方法。1の例を続けると、[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"allowDiagnostics"]. ただし、ユーザーが複数の場所 (Settings.bundle とアプリ内のどこか) からオプションを変更できるようにすると、ユーザーが混乱する可能性があることに注意してください。

于 2013-03-11T18:17:10.020 に答える