No need to archive the object before storing it to the NSUserDefaults, if all the key-value stored in dictionary are NSNUmber or NSString.
NSData *personEncodedObject = [NSKeyedArchiver archivedDataWithRootObject:userData];
NSUserDefaults *userDataStore = [NSUserDefaults standardUserDefaults];
[userDataStore setObject:personEncodedObject forKey:@"User Name"];
[userDataStore synchronize];
NSData *dataFromDefaults = [userDataStore objectForKey:@"User Name"];
NSDictionary *receivedDict = [NSKeyedUnarchiver unarchiveObjectWithData:dataFromDefaults];
NSLog(@"%@", [receivedDict description]);