2011-07-13 18 views
5

これは本当にシンプルなはずですが、動作させたくありません。私はNSRegularExpressionを使用するNSPredicateを使用してCoreDataを取得したいと思います。私はmyStringまたはmyString_10を検索したいと考えています(10は任意の数字です、例えばmyString_333)。NSPredicateとNSRegularExpression

これは私のコードです:

NSString *regexString = [NSString stringWithFormat:@"%@_[0-9]+", value]; 
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:regexString 
                      options:NSRegularExpressionSearch         
                      error:&error]; 

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(label = %@) OR (label = %@)", value, regex]; 

値は、エンティティのキ​​ーで文字列とラベルです。

値が "New Project"の場合、NSFetchRequestは1つのオブジェクトを含む配列を返しますが、フェッチするモデル( "New Project"と "New Project_1")に2つのラベルがあります。

私は間違っていますか?

答えて

3

正規表現は、NSStringまたは述部の一部である必要があります。 Regular Expressions in the Predicate Programming Guideを参照してください。 regexの代わりに=とregexStringの代わりにMATCHESを使用してみてください。何か問題がある場合は、パターンのためにICU Regular Expressionsを参照することができます。

+0

私はそれを読んでいます。私は、正規表現が述語文字列の一部である必要があると言う部分を見つけませんでした。その例を参照してください:http://stackoverflow.com/questions/2458881/nspredicate-and-regex – strave

+0

私はそれを編集して再言います。私が指摘しようとしていた問題は、あなたが 'NSString'ではなく' NSRegularExpression'を使っていることです。 %@でも文字列を使用できます。 – Joe

+0

偉大な、それは働いた!今私は考えを得た。どうもありがとうございました! – strave