-1

我正在尝试从 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 语句不起作用。(emailers 是一个数组,emailerL 是一个字符串)。

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

4

2 回答 2

3

要检查至少一条与查询匹配的记录,请改用,如果找不到匹配getFirstObject项,它将返回,并且速度会快得多。nil

PFQuery *query = [PFUser query];
[query whereKey:@"email" equalTo:emailerL];

if ([query getFirstObject]) {
    [PFUser requestParrwordResetForEmailInBackground:emailerL];
    // ... etc ...

当然,您确实应该使用“后台”版本,但这是您尝试的第一步。

于 2014-08-04T00:13:56.567 回答
1

一种更好的方法,它不涉及下载实际对象,而只是检查:

PFQuery *query = [PFUser query];
[query whereKey:@"email" equalTo:emailerL];
[query countObjectsInBackgroundWithBlock:^(int number, NSError *error) {
  if(number > 0) {
     ... it exists!
 }
}];

当然,还有单线程方法,尽管正如 Timothy 提到的,你真的应该使用背景。

PFQuery *query = [PFUser query];
[query whereKey:@"email" equalTo:emailerL];
if([query countObjects] > 0) {
   ... it exists!
}
于 2014-08-19T14:07:24.577 回答