我正在使用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会给我一个与我的实际查询无关的错误?如果它与我的正则表达式相关,有任何关于避免它的想法吗?
答案 0 :(得分:0)
我的地址簿中有一些中文名称,由于某些原因,这些名称导致了错误,我在检查我的正则表达式时添加了一行来跳过这些名称,错误消失了。
作为参考,我添加了BOOL
支票:
BOOL isLatin = [regexName canBeConvertedToEncoding:NSISOLatin1StringEncoding];