只需设置用户名即可防止创建Parse PFUser

时间:2015-06-09 20:57:35

标签: ios objective-c parse-platform

在我的应用中,用户可以使用Parse创建帐户。这很好但我只是注意到当我使用新用户名注册时,可以不注册密码。

我已经将PFUser子类化了,这是我的注册:

// LoginViewController.m
- (IBAction)signUpButtonPressed:(UIButton *)sender {
    [self signUpUser:signUpAlertControllerUsernameTextField.text
            password:signUpAlertControllerPasswordTextField.text];
}

- (void)signUpUser:(NSString *)usernameString password:(NSString *)passwordString {
    // Create a new user to sign up.
    User *newUser = [User user];
    newUser.username = usernameString;
    newUser.password = passwordString;
    [newUser signUpUser];
}

// User.m
- (void)signUpUser {
    [self signUpInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
        if (!error) {
            // Sign up success.
            NSLog(@"Sign up success");
            [[NSNotificationCenter defaultCenter] postNotificationName:@"SignUpSuccessNotification"
                                                                object:self];
        } else {
            // Sign up failed.
            NSLog(@"Sign up error: %@", [error userInfo][@"error"]);
        }
    }];
}

如果我将用户名文本字段保留为空,则Parse会回复:

[Error]: missing username (Code: 200, Version: 1.7.4)

但是当我将密码文本字段留空时,没有任何警告。

那么有没有办法让Parse也能检测创建新用户时是否输入了密码?

2 个答案:

答案 0 :(得分:0)

通过Objective-C验证执行此操作,而不是期望Parse执行此操作。例如:

- (void) checkFieldsComplete
{
    if ([signUpAlertControllerUsernameTextField.text isEqualToString:@""] || [signUpAlertControllerPasswordTextField.text isEqualToString:@""])
    {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Oops" message:@"You need to complete all fields" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
        [alert show];
    }
    else{
        [self signUpUser];
    }
}

答案 1 :(得分:0)

我已使用Parse错误代码解决了问题。因此,当我通过使用Parse创建新用户时,我现在可以执行此操作:

if ([error code] == 100) {
    NSLog(@"No internet connection");
    return;
} else if ([error code] == 200) {
    NSLog(@"No username entered in text fields");
    return;
} else if ([error code] == 201) {
    NSLog(@"No password entered in text fields");
    return;
} else if ([error code] == 202) {
    NSLog(@"Username taken");
    return;
}

然后我可以使用所有其他Parse error codes,具体取决于Parse返回的错误类型并显示我自己的警报控制器!