在我的应用中,用户可以使用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也能检测创建新用户时是否输入了密码?
答案 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返回的错误类型并显示我自己的警报控制器!