2016-11-29 90 views
0

我使用的是解析或查询基础上找到一个阵列内的正则表达式和电子邮件用户匹配。正则表达式可以很长,因为我从用户地址簿中的名称生成正则表达式。我的代码如下:解析或正则表达式查询给人Geoquery错误

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添加地理查询?如果我注释掉的matchesRegex:modifiers:行,则查询将返回正常...但我显然失去了我所需要的功能。

我没有符号或任何东西,因为我也有NSCharacterSet验证名称。

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

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

回答

0

我有一些中国人的名字在我的地址簿中,由于某种原因,这些名字被引起我检查我的正则表达式来跳过这些名字加了线的误差和错误消失。

对于参考我添加了一个BOOL检查:

BOOL isLatin = [regexName canBeConvertedToEncoding:NSISOLatin1StringEncoding];