NSPredicate属性名称中的通配符

时间:2012-08-20 19:43:14

标签: objective-c ios cocoa-touch nspredicate

有没有办法在NSPredicate的属性名称中包含通配符?

例如,我有一个这样的谓词:

keyPath CONTAINS 'C1b'

我在字典数组上使用这个谓词。在词典中,keyPath看起来像这样:

A2a1*;B1a*;C1*;D4*

在此keyPath值上使用上述谓词,它不会出现匹配。如果我将C1b更改为C1,那么它确实会匹配。如何使用通配符?

如果我不清楚或者是否有更多可以提供的信息,请告诉我。

感谢您的帮助!

编辑:我应该提到我需要匹配keyPath的每个部分。因此,例如,我的谓词看起来像这样:

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

1 个答案:

答案 0 :(得分: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;
}