2016-12-27 6 views
2

のオブジェクトをフィルタリングするシナリオが1つあります。NSDictionaryオブジェクトを持ち、すべてのオブジェクトにはキーnameがあります。私はGoogleでこれを見つけることを試みるが、適切な解決策を取得していないnameキー値0-9,[email protected]#$%^&*()_などの特殊文字や数字で始まるべきであるなどのオブジェクトフィルタオブジェクトのNSPredicate whoes stringはBEGINSWITHという特殊文字です

のその数をフィルタリングします。私は以下の述語を使用しましたが、正しいオブジェクトを取得することはできません。

NSPredicate *predicate= [NSPredicate predicateWithFormat:@"self.name BEGINSWITH %@",@"[^0-9]+.*"]; 

答えて

1

BEGINSWITHオペレータは正規表現をサポートしていません。述語で次のように非アルファベット文字で始まるかどうかを確認できます。

NSString *myRegex = @"[A-Za-z]*"; 
NSPredicate *myTestPred = [NSPredicate predicateWithFormat:@"NOT (SELF MATCHES %@)", myRegex] 
+0

実行時に例外が発生してクラッシュしています。 'キャッチされた例外のためにアプリケーションを終了しています' NSInvalidArgumentException '、理由:'フォーマット文字列を解析できませんでした '(SELF MATCHES [c]'^[A-Za-z]。* '' '' –

+0

述語でエラーが発生しましたが、まだ動作していません。 –

+0

はい、今は動作していますが、 'regex'は' @ "^ [A-Za-z] *" '..でなければなりません。 –