【问题标题】:Parse check if email exists query解析检查电子邮件是否存在查询
【发布时间】:2014-08-04 00:03:46
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

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

    PFQuery *query = [PFUser query];
    [query whereKey:@"email" equalTo:emailerL];
    
    if ([query getFirstObject]) {
        [PFUser requestParrwordResetForEmailInBackground:emailerL];
        // ... etc ...
    

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2013-01-05
        • 2022-01-20
        • 2016-04-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-19
        • 2011-06-07
        • 2017-02-26
        相关资源
        最近更新 更多