2014-09-23 1 views
0

로그인 할 때 iOS 앱에서 사용자 ID를 설정하고 loginstatusNSUserDefaults과 같이 사용했습니다.NSUserDefaults 값을 IOS를 통해 변수를 통해 설정할 수 없습니다

@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 값을 기록하려고했지만 모든 필드가 null이됩니다. 내가 제로로 모든 세트를 한번 기록과 현재 값이 설정되지 않은 경우

나중에 내가

- (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

NSUserDefaults *preferences;은 포인터 일뿐입니다. 그리고 그 가치는 nil입니다. 그것을 초기화해야합니다. 예를 들어 :

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

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

는이 목적을 위해 적절하다고 판단하는 것 인 init 방법, 또는 뭔가 다른 것 preferences를 초기화하는 더 논리적 인 장소가 될 수 있습니다.

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); 
} 
관련 문제