2012-09-21 3 views
31

고위 및 저해상도로 보였지만 내 대답을 찾을 수 없습니다. 나는 지정된 문자열과 같지 않은 모든 레코드에 대해 코어 데이터를 쿼리하려고합니다. 예를 들어 현재 세션 ID와 다른 모든 레코드입니다. 나는 아무 소용이 시도했다 :특정 문자열을 포함하지 않는 NSPredicate 쿼리

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"listingID != %@", [sitListingID objectAtIndex:i]]; 

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%@ NOT CONTAINS[cd] %@",@"listingID", [sitListingID objectAtIndex:i]]; 

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%@ NOT CONTAINS %@",@"listingID", [sitListingID objectAtIndex:i]]; 

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"listingID NOT like %@", [sitListingID objectAtIndex:i]]; 

아무것도 works.HEEEEELP을! ------------------------------------------------- ---- 더 많은 코드

NSFetchRequest *request = [[NSFetchRequest alloc] init]; 
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"ListingRecord" inManagedObjectContext:context]; 
    [request setEntity:entity]; 
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"sessionID <> %@", uniqueSessionListings]; 
    [request setPredicate:predicate]; 
    NSError *error = nil; 
    NSMutableArray *mutableFetchResults = [[context executeFetchRequest:request error:&error] mutableCopy]; 
+0

당신이 모든 방법을 제공 할 수 있습니까? emtpy 데이터를 가져올 수 있습니다. – NeverBe

답변

96

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"listingID != %@", sessionID]; 

이 속성 listingIDsessionID 같지 않은 모든 레코드를 찾는 작업을해야 귀하의 첫 번째 조건 (listingIDsessionID 동일한 유형을 가지고 제공). 두 문자열은 당신이 listingID이 문자열로 문자열 sessionID 포함하지 않는 모든 레코드를 찾으려면

,이 술어는 작동합니다 :

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"NOT (listingID CONTAINS %@)", sessionID]; 

사용하는 경우 "[CD] CONTAINS" 문자열 비교는 대소 문자 구분을 구분하여 구분해야합니다.

참고 : 당신은 인수로 속성 이름을 지정할 수 있지만 다음 형식으로 %K 대신 %@ 사용해야합니다

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"NOT (%K CONTAINS %@)", @"listingID", sessionID]; 
+1

HELL YEAH! 그것은 트릭을했다. Quick Side 질문. 제가 눈이 멀지 않는 한, Apple Predicate Programming Guide에서 당신의 솔루션을 읽지 못했습니다. 내가 가이드에서 그것을 놓쳤는가, 아니면 다른 곳에서 커버 되었습니까? (나중에 참조 할 것을 요구함) – sangony

+3

@sangony : 핵심 데이터 프로그래밍을 시작할 때 술어에 어려움이 있었지만, 술어 프로그래밍 가이드가 더 자세하게 설명 될 수있었습니다. 가능한 모든 비교, 연산 및 술어를 올바른 순서로 결합하는 것은 때로는 까다 롭습니다. 당신은 "BNF Definition of Cocoa Predicates"에서 모든 것을 말할 수 있습니다 :-) - 나는 여기서 다른 사람들의 질문과 대답을 읽음으로써 많은 것을 배웠습니다. –

+1

이것은 유용하지만 "포함하지 않는"연산자를 NSPredicateEditorRowTemplate에 추가하는 방법이 있습니까? 'NSContainsPredicateOperatorType'은 있지만 NSDoesNotContainPredicateOperatorType은 없습니다 (놓치지 않았다면). – Jon

관련 문제