有没有办法在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')
答案 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;
}