BSants
BSants

Reputation: 91

NSUserDefaults: How to get value

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

Answers (3)

user749127
user749127

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

Val Nolav
Val Nolav

Reputation: 902

Try to get the value by using boolForKey:

BOOL newUserExist = [defaults boolForKey:@"registered"];

Upvotes: -1

Liftoff
Liftoff

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

Related Questions