无法通过IOS中的变量设置NSUserDefaults值

时间:2014-09-23 06:43:07

标签: ios nsuserdefaults

在我的iOS应用中,当我登录时,我使用了设置UserID和 loginstatus 到这样的NSUserDefaults

@implementation Login{
    NSInteger UserId;
    NSUserDefaults *preferences;
}

- (IBAction)LogInClick:(UIButton *)sender {

 [preferences setInteger:UserId forKey:@"UserId"]; //UserId=40;
 [preferences setBool:YES forKey:@"loginstatus"];
 [preferences synchronize];

 NSLog(@"All NSUserDefaults: %@", [[NSUserDefaults standardUserDefaults] dictionaryRepresentation]);

 NSString *uID = [preferences stringForKey:@"UserId"];
 NSLog(@"UserID: %@",uID);
}

但是NSUserDefaults中没有设置值。我尝试记录所有NSUserDefaults值以及单个UserID值,但所有字段都为空。

稍后我使用此代码注销

  - (IBAction)LogOutClick:(UIButton *)sender {
  [[NSUserDefaults standardUserDefaults] setObject:0 forKey:@"UserId"];
  [[NSUserDefaults standardUserDefaults] setObject:NO forKey:@"loginstatus"];

   /* [preferences setInteger:0 forKey:@"UserId"];
    [preferences setBool:NO forKey:@"loginstatus"];
    [preferences synchronize];*/

    NSLog(@"All NSUserDefaults: %@", [[NSUserDefaults standardUserDefaults] dictionaryRepresentation]);

}

首先,当我退出时,所有设置为零,现在值不设置。谁能告诉我这是什么问题?

2 个答案:

答案 0 :(得分:2)

那是因为NSUserDefaults *preferences;只是一个指针。我猜,它的价值是nil。你应该初始化它。例如:

- (IBAction)LogInClick:(UIButton *)sender {
   preferences = [NSUserDefaults standardUserDefaults];

   [preferences setInteger:UserId forKey:@"UserId"]; //UserId=40;
   [preferences setBool:YES forKey:@"loginstatus"];
   [preferences synchronize];
 ...

初始化preferences可能是一个更合理的地方init方法,或其他您认为适合此目的的方法。

答案 1 :(得分:1)

您还没有获得标准的userdefaults参考。改变这个方法

- (IBAction)LogInClick:(UIButton *)sender {

  preferences = [NSUserDefaults standardUserDefaults];

 [preferences setInteger:UserId forKey:@"UserId"]; //UserId=40;
 [preferences setBool:YES forKey:@"loginstatus"];
 [preferences synchronize];

 NSLog(@"All NSUserDefaults: %@", [[NSUserDefaults standardUserDefaults] dictionaryRepresentation]);

 NSString *uID = [preferences stringForKey:@"UserId"];
 NSLog(@"UserID: %@",uID);
}