解析检查电子邮件是否存在查询

时间:2014-08-04 00:03:47

标签: objective-c arrays string parse-platform pfquery

我正在尝试查询来自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是一个字符串)。

我想我只需要帮助将字符串与数组中的数据进行比较。

2 个答案:

答案 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!
}