首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改密码PFuser

更改密码PFuser
EN

Stack Overflow用户
提问于 2014-04-01 09:31:38
回答 1查看 1.5K关注 0票数 0

你如何让用户改变密码,邮件,用户名等。有什么想法吗?到目前为止,我有下面的代码。我的问题是,旧数据没有出现,我不能更新它。我希望得到一些帮助!))非常感谢

代码语言:javascript
复制
#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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-01 11:42:45

不要查询用户对象。在[PFUser currentUser];中已经有了,您可以直接从这个对象获取字段:

代码语言:javascript
复制
PFUser curUser = [PFUser currentUser];
_usernameField.text = [curUser valueForKey:@"username"];

或者简单的

代码语言:javascript
复制
_usernameField.text = curUser[@"username"];

您的updateSave方法是正确的,但是我不知道为什么要使用"newmail“、"newpassword”等等。我猜您想在这里使用“密码”、“用户名”等等,除非您想在用户配置文件上设置一个名为"newname“的字段.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22781831

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档