我正在尝试在iphone / ipad应用程序中保存一些信息。 问题是它可以工作,但如果我关闭应用程序(使用模拟器上的主页按钮或使用cmd + q关闭)信息将丢失!
这是我的代码(如果你看到,我使用了“syncronize”)
- (IBAction)choose1{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:@"choose1" forKey:@"choose"];
[defaults synchronize];
}
- (IBAction)choose2{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:@"choose2" forKey:@"choose"];
[defaults synchronize];
}
- (IBAction)openview{
NSString *var = [[NSUserDefaults standardUserDefaults] objectForKey:@"choose"];
if (var == @"choose1"){
[self pushViewController:view1 animated:YES];}
else if (var == @"choose2"){
[self pushViewController:view2 animated:YES];
}
}
我不明白为什么:(
答案 0 :(得分:2)
比较字符串时,应使用isEqualToString方法,即:
if ([var isEqualToString:@"choose1"]){
否则,您正在比较实际对象而不是其内容。
答案 1 :(得分:1)
我不完全确定,但可能是保存默认值而错误位于其他地方。我正在考虑你的“openView”方法:
- (IBAction)openview{
NSString *var = [[NSUserDefaults standardUserDefaults] objectForKey:@"choose"];
if (var == @"choose1"){
[self pushViewController:view1 animated:YES];}
/** you are comparing to "choose1" here as well. **/
else if (var == @"choose1"){
[self pushViewController:view2 animated:YES];
}
另一种可能性是你永远不会调用你的choose1()或choose2()方法吗? 这可以解释为什么价值永远不会改变。
尽管从这两个可能性中我认为用于更改UserDefaults的代码中没有错误。
希望这有帮助。
此致
Gjallar
答案 2 :(得分:0)
啊,对不起:我是意大利人,所以我用“选择”这个词用意大利语翻译“scelta”。 在这里我用英语翻译,我写了“choose1”,但在我的代码中,我使用了“choose2”(或“scelta2”:P)
另一种可能性(我从未调用过函数choose1()或select2())...不,我当然打过电话了!