NSUserDefaults不保存我的值

时间:2012-03-18 18:10:07

标签: ios objective-c nsuserdefaults

我使用此代码保存:

[[NSUserDefaults standardUserDefaults] setValue:@"vruch" forKey:@"nastoikaIP"];
[[NSUserDefaults standardUserDefaults] synchronize];

并加载此代码:

NSString* automanual = [[NSUserDefaults standardUserDefaults] 
                         valueForKey:@"nastroikaIP"];

if ([automanual isEqualToString:@"vruch"]) {
    autovruch.selectedSegmentIndex = 1;
   [self obnovittext];
} 

2 个答案:

答案 0 :(得分:11)

您不应该使用方法setValue:(来自NSKeyValueCoding协议),而是setObject:(来自NSUserDefaults类)来存储字符串。

[[NSUserDefaults standardUserDefaults] setObject:@"vruch" forKey:@"nastroikaIP"];
[[NSUserDefaults standardUserDefaults] synchronize];

您可以使用方法stringForKey:

检索字符串
NSString* automanual = [[NSUserDefaults standardUserDefaults] stringForKey:@"nastroikaIP"];

最后,请注意,通常最好为NSUserDefaults中使用的键定义常量,以避免任何错误输入错误,这些错误在发生时可能很难调试。

修改

看起来您已经犯了错误输入错误nastoikaIP!= nastroikaIP。注意缺少/额外的r字母。

答案 1 :(得分:1)

保存字符串,因此需要setObject而不是setValue

 [[NSUserDefaults standardUserDefaults] setObject:@"vruch" forKey:@"nastoikaIP"];
     [[NSUserDefaults standardUserDefaults] synchronize];

并为装载改变它

 NSString* automanual = [[NSUserDefaults standardUserDefaults] objectForKey:@"nastroikaIP"];

if ([automanual isEqualToString:@"vruch"]) {
autovruch.selectedSegmentIndex = 1;
[self obnovittext];
}