Reputation: 91
I am new in iOS, Object-C and I am trying to do a simple login/registerLogin using NSUserDefaults.
My problem is: How could I access/get the value saved in NSUserDefaults to verify if an user already exist?
This is the code for registering a new user:
-(void)registerNewUser {
// Getting username and the password
NSString *newUsername = self.usernameRegisterTextField.text;
NSString *newPassword = self.passwordRegisterTextField.text;
// Using NSUserDefaults to storage username and password
NSUserDefaults *newUser = [NSUserDefaults standardUserDefaults];
[newUser setObject:newUsername forKey:@"username"];
[newUser setObject:newPassword forKey:@"password"];
[newUser setBool:YES forKey:@"registered"];
[newUser synchronize];
[self performSegueWithIdentifier:@"registerSucessSegue" sender:nil];
}
And I am trying to get the value saved in NSUserDefaults to verify if an user already exist instead of calling the login screen again:
- (IBAction)productTableButton:(id)sender {
// Verification if an user exist
NSUserDefaults *newUser = [NSUserDefaults standardUserDefaults];
BOOL newUserExist = [newUser valueForKey:@"registered"];
if (newUserExist == YES) {
[self performSegueWithIdentifier:@"productSegue" sender:nil];
} else {
[self performSegueWithIdentifier:@"loginSegue" sender:nil];
}
}
Is there something that I am doing wrong when I am trying to access the value of an user saved in NSUserDefaults?
Upvotes: 0
Views: 3848
Reputation:
Yes. valueForKey
returns objects, not primitive data types like BOOL
.
For NSUserDefaults
, the shortest way to get a BOOL
value is to use boolForKey
instead.
Upvotes: 2
Reputation: 902
Try to get the value by using boolForKey:
BOOL newUserExist = [defaults boolForKey:@"registered"];
Upvotes: -1
Reputation: 25392
You can always check objectForKey
, which is safe to use for any type that could be associated with your key.
If the key has been previously set, it will return an id
; otherwise, it will return nil. If it is a boolean, you will get an NSNumber which can easily be converted.
id someKey = [[NSUserDefaults standardUserDefaults] objectForKey:@"Key"];
if(someKey)
{
//User exists
}
else
{
//User doesn't exist
}
Upvotes: 1