0

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

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

keyPath CONTAINS 'C1b'

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

A2a1*;B1a*;C1*;D4*

在此值上使用上述谓词keyPath,它不会作为匹配项出现。如果我更改C1b为 just 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 回答