你如何讓用戶更改密碼,郵件,用戶名等任何想法?到目前爲止,我有這個代碼,你可以在下面看到。我的問題是舊數據不顯示,我不能更新它。我會喜歡一些幫助! :)非常感謝更改密碼PFuser
#import <UIKit/UIKit.h>
#import <Parse/Parse.h>
#import <MobileCoreServices/UTCoreTypes.h>
#import <QuartzCore/QuartzCore.h>
@interface SettingsUPEViewController : UIViewController <UITextFieldDelegate>
@property (strong, nonatomic) IBOutlet UITextField *usernameField;
@property (strong, nonatomic) IBOutlet UITextField *passwordField;
//@property (strong, nonatomic) IBOutlet UITextField *password2Field;
@property (strong, nonatomic) IBOutlet UITextField *mailField;
- (IBAction)updateSave:(id)sender;
@end
#import "SettingsUPEViewController.h"
@interface SettingsUPEViewController()
@end
@implementation SettingsUPEViewController
NSArray *retriveFormParse;
NSArray *profileArray;
- (id)initWithCoder:(NSCoder *)aCoder
{
self = [super initWithCoder:aCoder];
if (self) {
PFQuery *query= [PFUser query];
[query whereKey:@"username" equalTo:[[PFUser currentUser]username]];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
if (!error) {
profileArray = [[NSArray alloc] initWithArray:objects];
// The find succeeded.
NSLog(@"@%", objects.count);
// Do something with the found objects
for (PFObject *object in objects) {
NSLog(@"%@", objects);
}
} else {
// Log details of the failure
NSLog(@"Error: %@ %@", error, [error userInfo]);
}
}];
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
PFQuery *query= [PFUser query];
[query whereKey:@"username" equalTo:[[PFUser currentUser]username]];
PFObject *object = [query getFirstObject]; // synchronous request, not ideal, look at getFirstObjectInBackgroundWithBlock
_usernameField.text = [object valueForKey:@"newname"];
_passwordField.text = [object valueForKey:@"newpassword"];
_mailField.text = [object valueForKey:@"newmail"];
_usernameField.delegate = self;
_passwordField.delegate = self;
_mailField.delegate = self;
_usernameField.delegate = self;
_passwordField.delegate = self;
_mailField.delegate = self;
_usernameField.layer.masksToBounds=YES;
_usernameField.layer.borderColor=[[UIColor whiteColor]CGColor];
_usernameField.layer.borderWidth= 1.0f;
_passwordField.layer.masksToBounds=YES;
_passwordField.layer.borderColor=[[UIColor whiteColor]CGColor];
_passwordField.layer.borderWidth= 1.0f;
//_password2Field.layer.masksToBounds=YES;
//_password2Field.layer.borderColor=[[UIColor whiteColor]CGColor];
//_password2Field.layer.borderWidth= 1.0f;
_mailField.layer.masksToBounds=YES;
_mailField.layer.borderColor=[[UIColor whiteColor]CGColor];
_mailField.layer.borderWidth= 1.0f;
_usernameField.delegate = self;
_passwordField.delegate = self;
_mailField.delegate = self;
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
/*
#pragma mark - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
// Get the new view controller using [segue destinationViewController].
// Pass the selected object to the new view controller.
}
*/
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSUInteger newLength = [textField.text length] + [string length] - range.length;
return (newLength > 18) ? NO : YES;
}
- (void) retriveFromParse {
PFQuery *query= [PFUser query];
[query whereKey:@"username" equalTo:[[PFUser currentUser]username]];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
if (!error) {
// The find succeeded.
NSLog(@"@%", objects.count);
// Do something with the found objects
for (PFObject *object in objects) {
NSLog(@"%@", objects);
}
} else {
// Log details of the failure
NSLog(@"Error: %@ %@", error, [error userInfo]);
}
}];
}
- (IBAction)updateSave:(id)sender {
// Create PFObject with recipe information
PFUser *profile = [PFUser currentUser];
[profile setObject:_usernameField.text forKey:@"newname"];
[profile setObject:_passwordField.text forKey:@"newpassword"];
[profile setObject:_mailField.text forKey:@"newmail"];
// Upload recipe to Parse
[profile saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
if (!error) {
// Show success message
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Upload Complete" message:@"Successfully saved profile" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[alert show];
// Notify table view to reload the profile from Parse cloud
// Dismiss the controller
// [self dismissViewControllerAnimated:YES completion:nil];
[self performSegueWithIdentifier:@"nameSet" sender:self];
} else {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Upload Failure" message:[error localizedDescription] delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[alert show];
}
}];
}
/// if(![oldPassword.text isEqualToString:[user password]]){
/// [alertMessagePassword setMessage:@"The old password is incorrect!"];
/// [alertMessagePassword show];
#pragma mark - Textfield delegate
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];
return YES;
}
@end
謝謝你這麼吃@handsomeguy! 我將它改爲: 'PFUser * curUser = [PFUser currentUser]; _usernameField.text = [curUser valueForKey:@「username」]; _passwordField.text = [curUser valueForKey:@「password」]; _mailField.text = [curUser valueForKey:@「email」]; _usernameField.text = curUser [@「username」]; _passwordField.text = curUser [@「password」]; _mailField.text = curUser [@「email」]; ' 我也拿走了newpassword等它更好地工作,但我得到這個錯誤:錯誤:用戶可能沒有密碼字段(代碼:105,版本:1.2.18) – TheNiceOne
我想你沒有從這個上面的代碼,但從你更新密碼的代碼?沒有閱讀它? – Moonwalkr
你的意思是這個代碼? (IBAction)updateSave:(id)sender //使用配方信息創建PFObject PFUser * profile = [PFUser currentUser]; [profile setObject:_usernameField.text forKey:@「name」]; [profile setObject:_passwordField.text forKey:@「password」]; [profile setObject:_mailField.text forKey:@「email」];' ----- – TheNiceOne