2016-11-29 6 views
0

パース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にジオクエリを追加させてしまったら?私がmatchesRegex:modifiers:の行をコメントアウトすると、クエリは正常に戻ります...しかし、私は明らかに必要な機能を失っています。

私はNSCharacterSetで名前を検証しているので、記号などはありません。

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

なぜ私の実際のクエリと関係のないエラーが返されますか?それは私の正規表現に関連する場合、それを避けるための任意のアイデア?

答えて

0

私のアドレス帳にいくつかの中国語の名前がありますが、何らかの理由でこれらの名前がエラーの原因となっていました。これらの名前をスキップするために正規表現をチェックしてエラーがなくなりました。参考のため

私はBOOLチェックを追加しました:

BOOL isLatin = [regexName canBeConvertedToEncoding:NSISOLatin1StringEncoding]; 
関連する問題