0

アプリが実行中または最小化されている間、私のNSUserDefaults仕事はうまくいきます。しかし、アプリを強制終了して再起動すると、返されるオブジェクトはnull. コード:

colorDefault = [NSUserDefaults standardUserDefaults];
[colorDefault setObject:myColor2 forKey:@"fieldKey"];
NSDictionary *appDefaults = [NSDictionary dictionaryWithObjectsAndKeys:myColor2, @"fieldKey", nil];

[[NSUserDefaults standardUserDefaults] registerDefaults:appDefaults];
//[[NSUserDefaults standardUserDefaults] synchronize];

[colorDefault synchronize];

と を呼び出します[[NSUserDefaults standardUserDefaults] synchronize]が、applicationDidEnterBackground成功applicationWillTerminateしません。私はこれらのメソッドの両方をNSLoggedし、アプリを強制終了すると、 が呼び出されているだけであることに気付きましたDidEnterBackground..

助けてくれてありがとう!

4

1 に答える 1

0

うーん...あなたのコードはもっと単純であるべきだと思います。

これは私が NSUserDefault を書き、それを取得するために行うことです:

// write
[[NSUserDefaults standardUserDefaults] setObject:@"aString" forKey:@"aKey"];

// read
[[NSUserDefaults standardUserDefaults] objectForKey:@"aKey"];

setObject が唯一のオプションではありません。

プロジェクトでSettings.bundleとを設定することを忘れないでください。aKey

<dict>
<key>Key</key>
<string>aKey</string>
<key>DefaultValue</key>
<false/>
</dict>

お役に立てれば...

于 2012-03-15T17:48:43.337 に答える