在我的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]);
}
首先,当我退出时,所有设置为零,现在值不设置。谁能告诉我这是什么问题?
答案 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);
}