Parse或Regex查询会产生Geoquery错误

时间:2016-11-29 00:51:16

标签: regex parse-platform

我正在使用Parse OR查询根据阵列中的正则表达式和电子邮件查找用户匹配项。正则我可以使用用户地址簿中的名称生成正则表达式。我的代码如下:

    PFQuery *emailQuery = [WPUser query];
    [emailQuery whereKey:@"email" containedIn:emails];

    PFQuery *nameQuery = [WPUser query];
    [nameQuery whereKey:@"name" matchesRegex:regex modifiers:@"i"];

    PFQuery *query = [PFQuery orQueryWithSubqueries:@[emailQuery, nameQuery]];
    [query whereKey:@"objectId" notEqualTo:[WPUser currentUser].objectId];
    [query whereKeyExists:@"signedUp"];
    [query findObjectsInBackgroundWithBlock:^(NSArray * _Nullable objects, NSError * _Nullable error) {
        self.registeredContacts = objects;
        BLOCK_ON_MAINTHREAD()
    }];

地址簿中的每个名称的正则表达式格式为(^First.*Last$)|(^First.*Last$)等。我使用i修饰符使其不区分大小写。

但是,我在这个查询中遇到了一个奇怪的错误,它似乎最近才开始:[Error]: geo query within or is not supported (Code: 102, Version: 1.14.2)。我可以看到,我没有为此查询添加任何地理约束。如果我的正则表达式以某种方式导致Parse添加一个geoquery?如果我注释掉matchesRegex:modifiers:的行,那么查询将恢复正常...但是我显然失去了我需要的功能。

我没有符号或任何内容,因为我也使用NSCharacterSet验证名称。

NSMutableCharacterSet *validCharacters = [NSMutableCharacterSet letterCharacterSet];
[validCharacters formUnionWithCharacterSet:[NSCharacterSet whitespaceCharacterSet]];

为什么Parse会给我一个与我的实际查询无关的错误?如果它与我的正则表达式相关,有任何关于避免它的想法吗?

1 个答案:

答案 0 :(得分:0)

我的地址簿中有一些中文名称,由于某些原因,这些名称导致了错误,我在检查我的正则表达式时添加了一行来跳过这些名称,错误消失了。

作为参考,我添加了BOOL支票:

BOOL isLatin = [regexName canBeConvertedToEncoding:NSISOLatin1StringEncoding];