2016-08-26 2 views
0

私はドキュメント管理ページを扱っています。私はユーザ入力からsearchBar.textを得ている間にNSPredicate正規表現を使用しました。入力が中国語の括弧であっても、英語の形でうまくいっている間、エラーが発生しました(下の画像のように)。もし誰かがこの問題を遭遇したら?ありがとうございました。
enter image description hereNSPredicate正規表現エラー

ここで私のコードは、最後の行に起こります。

NSString * searchStr = [NSString stringWithFormat:@"fileName like[cd] \'*%@*\'",searchDisplayController.searchBar.text]; 
NSPredicate *predicate = [NSPredicate predicateWithFormat:searchStr]; 
self.fileArrayAfterPre = [[NSMutableArray alloc] initWithArray:[fileArr filteredArrayUsingPredicate:predicate]]; 
+0

このエラーの理由は、正規表現パターンとして使用する入力に、アンペアされていない数のエスケープされていない '('と ')'が含まれているためです。正規表現パターンとして使用された文字列をエスケープするか、以下の答えに示すようにCONTAINSを使用してください。 –

+0

ご了承いただき、ありがとうございます。 – nullLululi

答えて

2

LIKE:それはワイルドカード式の中で使用しています。

CONTAIN:あなたの質問によると、ファイルが検索テキストと一致するため、[cd]を使用してください。

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"fileName CONTAINS[cd] %@",searchDisplayController.searchBar.text]; 

    self.fileArrayAfterPre = [[NSMutableArray alloc] initWithArray:[fileArr filteredArrayUsingPredicate:predicate]]; 
+0

ありがとう!できます!! – nullLululi