NSUserDefaults在iOS 7中无法保存

3
我遇到了关于 NSUserDefaults 的问题。它保存默认设置直到我将应用程序在后台关闭,然后当我返回时所有的默认设置都消失了。每次构建新版本并安装到我的设备上时它们也会消失。但只要我不在后台杀掉应用程序,在应用程序中它们就一直存在。在 iOS 6 中它正常工作。你有什么想法吗?

3
你在同步吗?从技术上讲,你不应该必须这样做,但值得一试。 - WrightsCS
是的,我是。太奇怪了。 - HenryGale
你是在头文件中定义了 NSUserDefaults *defaults; 吗?还是使用了 [NSUserDefaults standardDefaults] - WrightsCS
我使用cocos2x(3.0)也遇到了同样的问题。即使调用synchronize也无法解决该问题。 - marzapower
你找到为什么无法在用户默认设置中保存了吗? - Anjani
你想要保存什么类型的值?是模型或图像类型,还是基本类型? - ali
3个回答

0

将您的值以字符串(或根据您的要求选择其他类型)的形式保存在用户默认设置中

NSUserDefaults *userdefault=[NSUserDefaults standardUserDefaults];        
NSString *str=[NSString stringWithFormat:@"%@",[dicUser objectForKey:@"device_token"]];
[userdefault setObject:str forKey:@"YOURKEY"];

0

由于你没有提供你的代码,所以我提供一个在iOS 7上完美运行的示例,你可以试一下。希望对你也有用。

保存布尔值的方法:

bool flag = YES;
[[NSUserDefaults standardUserDefaults] setBool:flag forKey:@"flag"];

用于检索布尔值

bool flag = [[NSUserDefaults standardUserDefaults] boolForKey:@"flag"];

-2
确保几件事情,比如在使用它之前已经声明了userDefaults,如果你已经将其放置在AppDelegate文件中,则以下是一个示例代码,我是如何保存值并且它可以正常工作,所以试着按照这种方式去做。
APP_DELEGATE.userDefaults = [NSUserDefaults standardUserDefaults];
[APP_DELEGATE.userDefaults setObject:@"unChecked" forKey:@"CheckMark"];
[APP_DELEGATE.userDefaults synchronize];

这里的APP_DELEGATE是在我的AppDelegate.h文件中声明的

#define APP_DELEGATE ((AppDelegate*)[[UIApplication sharedApplication] delegate])

希望能有所帮助!


2
NSUserDefaults 保存到应用委托中的原因是什么? - Bryan Chen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接