0

userDefaultsをどこに保存して、誰でも利用できるようにするための質問がいくつかあることを理解しています。現在、私はAppDelegateに私のものを持っており、それは機能しています。ただし、ユーザー設定ごとにデフォルト設定を更新したいと思います。

ただし、ユーザーがアプリを終了して再起動すると、デフォルトが最初から作成されます。

#import "AppDelegate.h"

@implementation AppDelegate

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

    NSUserDefaults *sharedPref = [NSUserDefaults standardUserDefaults];
    [sharedPref setObject:@"Washington, DC" forKey:@"defaultLocation"];
    //  

    return YES;
}

明らかに、これはアプリが開くたびに設定され、ユーザーの選択は時代遅れになります。

デフォルトを設定し、アプリの起動時に上書きせずにユーザーに変更させるにはどうすればよいですか?

ありがとう

4

3 に答える 3

4

そのためには registerDefaults: を使用する必要があります

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
 // ...
    [NSUserDefaults standardUserDefaults] registerDefaults:@{@"defaultLocation" : @"Washington, DC"}];
// ...
    return YES;
}
于 2013-03-09T04:35:30.463 に答える
1

次のコードは、アプリが起動されているかどうかのチェックを実行します。置き換えることを目的としてい-registerDefaults:ます。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    if(![[NSUserDefaults standardUserDefaults] boolForKey:@"setupApp"])
        {
            NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
            [defaults setBool:YES forKey:@"setupApp"];
            [defaults setObject:@"Washington, DC" forKey:@"defaultLocation"];

            [defaults synchronize];
        }
    return YES;
}
于 2013-03-09T04:28:50.377 に答える
0

NSUserDefaultsアプリケーション全体で使用できるシングルトンです。次の方法でいつでも呼び出すことができます。

[NSUserDefaults standardUserDefaults]

ユーザーは直接対話することはできません。データを収集して保存する必要があります。値を設定するには:

[[NSUserDefaults standardUserDefaults] setObject:@"Some Value" forKey:@"MyKey"];
[[NSUserDefaults standardUserDefaults] synchronize];  // to save

ユーザーのデフォルトは、アプリケーションの起動間で保持されます。

オブジェクトの設定には注意する必要があります。ユーザー デフォルトで設定できるのは、プロパティ リスト タイプのみです。

参照

于 2013-03-09T04:31:57.290 に答える