The problem with NSUserDefaults Opt

Share
The problem with NSUserDefaults Opt

After you register the defaults, you still need to do a sync to have
the values actually saved in the default database:

[[NSUserDefaults standardUserDefaults] synchronize];

See if that helps.

Sze Wong
Zerion Consulting
http://www.zerionconsulting.com

On Sep 27, 12:10 am, Tom <sunkunj...@gmail.com> wrote:

> hi, all > i want to store some status of application to recover application's > status when start next time...for example, i want to display a > content my last inputed in the searchBar when applicaltion start. i > used NSUserDefaults like this: > - (void)applicationDidFinishLaunching:(UIApplication *)application { > [aViewController aSearchBar].text = [[NSUserDefaults > standardUserDefaults] objectForKey:@"searchBarText"]; > ...

> }

> - (void)applicationWillTerminate:(UIApplication *)application
> {
> NSLog(@"will terminate");

> NSMutableDictionary *defaultValues = [NSMutableDictionary
> dictionary];
> NSString *searchBarText = [[NSString alloc] initWithString:
> [aViewController aSearchBar].text];
> [defaultValues setObject:searchBarText forKey: @"searchBarText"];
> [[NSUserDefaults standardUserDefaults] registerDefaults:
> defaultValues];
> NSLog([[NSUserDefaults standardUserDefaults]
> objectForKey:@"searchBarText"]);

> [[nbWikiUIController nbSearchBar].text writeToFile:@"searchBarText"
> atomically:YES];

> }

> but the content of searchBar is blank when you click the iphone
> simulator's home button and start the appliclation again.how ever, if
> you write some value to a file directly it will work well, like this:

> - (void)applicationDidFinishLaunching:(UIApplication *)application {

> NSArray *paths =
> NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
> NSUserDomainMask, YES);
> NSString *documentsDirectory = [paths objectAtIndex:0];
> NSString *appFile = [documentsDirectory
> stringByAppendingPathComponent:@"searchBarText"];
> NSString *myString = [NSString stringWithContentsOfFile:appFile];
> [nbWikiUIController nbSearchBar].text = myString;
> ...

> }

> - (void)applicationWillTerminate:(UIApplication *)application
> {
> NSLog(@"wikimate terminate");

> [[nbWikiUIController nbSearchBar].text writeToFile:@"searchBarText"
> atomically:YES];

> }

> If you do like this, you will get this warning:
> warning: 'writeToFile:atomically:' is deprecated (declared at /var/
> folders/Mv/Mv45MRvrHuKkTR4seo+8kk+++TI/-Caches-/com.apple.Xcode.501/
> CompositeSDKs/iphonesimulator-iPhoneSimulator2.0-
> cwkscxilvbhpyzhgdmxradhnpbjc/System/Library/Frameworks/
> Foundation.framework/Headers/NSString.h:352)

> i don't know why...

> many thanks.

- Hide quoted text -- Show quoted text -