0

NSPredicate の属性名にワイルドカードを含める方法はありますか?

たとえば、次のような述語があります。

keyPath CONTAINS 'C1b'

この述語を辞書の配列で使用します。辞書では、次のkeyPathようになります。

A2a1*;B1a*;C1*;D4*

このkeyPath値に対して上記の述語を使用すると、一致しません。C1bjust C1thenに変更すると、一致します。ワイルドカード文字を使用するにはどうすればよいですか?

明確でない場合、または提供できる情報が他にある場合はお知らせください。

助けてくれてありがとう!

編集:の各セクションを一致させる必要があることを言及する必要がありましたkeyPath。たとえば、私の述語は次のようになります。

(keyPath CONTAINS 'B1a') AND (keyPath CONTAINS 'C1c1') AND (keyPath CONTAINS 'A2a1') AND (keyPath CONTAINS 'D4a')
4

1 に答える 1

0

以下のコードは正しく動作します

patternString にはワイルドカードを含めることができます

例: patternString = A2a1*

-(NSMutableArray *)searchByPattern:(NSString *)patternString inputArray:(NSMutableArray *)inputArray
{
    NSLog(@"orginal Array count=%d",[inputArray count]);
    NSString *match=[NSString stringWithFormat:@"%@",patternString];
    NSLog(@"match = %@",match);
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF like %@",match];    
    NSMutableArray *mArrayFiltered = [[inputArray filteredArrayUsingPredicate:predicate] mutableCopy];
    //NSLog(@"mArrayFiltered = %@ count = %d",mArrayFiltered,[mArrayFiltered count]);
    return mArrayFiltered;
}
于 2012-08-20T19:54:20.033 に答える