我正在尝试查询来自Parse的所有电子邮件,并检查它是否与用户输入的电子邮件相同。
PFQuery *query = [PFUser query];
[query whereKey:@"email" equalTo:emailerL];
NSArray *emailers = [query findObjects];
if ([emailers containsObject:emailerL]) {
[PFUser requestPasswordResetForEmailInBackground:emailerL];
[self.navigationController popToRootViewControllerAnimated:YES];
}
else {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Please try again" message:@"Email does not exist" delegate:self cancelButtonTitle:@"Gotcha" otherButtonTitles:nil];
[alert show];
}
我不知道为什么if语句不起作用。 (电子邮件是一个数组,emailerL是一个字符串)。
我想我只需要帮助将字符串与数组中的数据进行比较。
答案 0 :(得分:3)
要检查至少一条与查询匹配的记录,请使用getFirstObject
代替nil
,如果它找不到匹配且速度会快得多。
PFQuery *query = [PFUser query];
[query whereKey:@"email" equalTo:emailerL];
if ([query getFirstObject]) {
[PFUser requestParrwordResetForEmailInBackground:emailerL];
// ... etc ...
当然,你应该真的在背景中使用""版本,但这是你尝试的第一步。
答案 1 :(得分:1)
一种不涉及下载实际对象的更好方法,只需检查:
PFQuery *query = [PFUser query];
[query whereKey:@"email" equalTo:emailerL];
[query countObjectsInBackgroundWithBlock:^(int number, NSError *error) {
if(number > 0) {
... it exists!
}
}];
当然,有单线程方法,但正如蒂莫西提到的那样,你应该真正使用背景。
PFQuery *query = [PFUser query];
[query whereKey:@"email" equalTo:emailerL];
if([query countObjects] > 0) {
... it exists!
}