당신은 당신이 이미 가지고있는 술어를 부정하는 사용자 정의 술어를 구축 할 수 있습니다. 당신이 통과하고 구축 할 수 있도록,
NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF contains '-'"];
NSPredicate *notPred = [NSCompoundPredicate notPredicateWithSubpredicate:pred];
[resultsArray filterUsingPredicate:pred];
NSCompoundPredicate 수준의 지원 AND, OR 및 NOT 조건 유형 : 실제로, 기존 술어를 취하고 및 NOT 연산자처럼 작동 다른 조건에서 포장 배열에서 원하지 않는 모든 문자를 가진 큰 복합 술어를 필터링 한 다음 필터링하십시오. 같은 시도 : 그래도, 효율성에 대해 어떠한 보증도하지 않습니다, 그것은 아마도 먼저 최종 배열에서 가장 문자열을 제거 할 가능성이 문자를 넣어하는 것이 좋습니다
// Set up the arrays of bad characters and strings to be filtered
NSArray *badChars = [NSArray arrayWithObjects:@"-", @"*", @"&", nil];
NSMutableArray *strings = [[[NSArray arrayWithObjects:@"test-string", @"teststring",
@"test*string", nil] mutableCopy] autorelease];
// Build an array of predicates to filter with, then combine into one AND predicate
NSMutableArray *predArray = [[[NSMutableArray alloc]
initWithCapacity:[badChars count]] autorelease];
for(NSString *badCharString in badChars) {
NSPredicate *charPred = [NSPredicate
predicateWithFormat:@"SELF contains '%@'", badCharString];
NSPredicate *notPred = [NSCompoundPredicate notPredicateWithSubpredicate:pred];
[predArray addObject:notPred];
}
NSPredicate *pred = [NSCompoundPredicate andPredicateWithSubpredicates:predArray];
// Do the filter
[strings filterUsingPredicate:pred];
을 필터 할 수 있도록 가능한 한 많은 회로를 단락시킨다.
출처
2009-07-22 16:17:07
Tim
변경된 제목이이 질문에 무엇을 묻는 지 잘 반영합니다. –