2011-04-14 6 views
4

정수 필드가있는 테이블이 있습니다. 해당 필드에 몇 가지 다른 값이 들어있는 모든 행을 선택하고 싶습니다.NSPredicate를 사용하여 정수 목록을 대조하십시오.

나는이 사용하고 있습니다

[NSPredicate predicateWithFormat:@"myIntValue IN {1,2,3,4}"] 

을하지만 이것은 단지 myIntValue 내가 뭘 잘못 1. ​​

인 행을 반환?

답변

10

이 작동 : 문제가 처음 게시 된 이후이 변경되었습니다하지만이 모든 세에서 동일한 조건을 얻을 경우 나도 몰라

NSFetchRequest *request = [[NSFetchRequest alloc] init]; 

NSArray *idList = [NSArray arrayWithObjects:[NSNumber numberWithInt:1], 
              [NSNumber numberWithInt:2], 
              [NSNumber numberWithInt:3], 
              [NSNumber numberWithInt:4], 
              nil]; 
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"idealForId IN $IDLIST"]; 
request.predicate = [predicate predicateWithSubstitutionVariables: 
    [NSDictionary dictionaryWithObject:idList forKey:@"IDLIST"]]; 
+1

핵심 데이터는 개체 만 저장하므로 조건자를 만들 때 항상 스칼라를 개체로 변환해야합니다. – TechZen

2

시도해 보셨습니까?

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"myIntValue IN %@", 
[NSArray arrayWithObjects:@"1", @"2", @"3", @"4", nil]]; 

documentation을 여기에서 사용할 수 있습니다.

+0

나는 문자열에 대해 작동 할 수 있다고 생각하지만, 정수에서는 작동하지 않는다. @ "1"대신 [NSNumber numberWithInt : 1] 시도했지만 그 중 하나를 작동하지 않았다. – teedyay

+0

@ "1"은 NSString이고 @ 1은 NSNumber입니다. – trapper

0

.

[NSPredicate predicateWithFormat:@"myIntValue IN {1, 2, 3, 4}"]; 

[NSPredicate predicateWithFormat:@"myIntValue IN {%d, %d, %d, %d}", 1, 2, 3, 4]; 

[NSPredicate predicateWithFormat:@"myIntValue IN %@", @[@1, @2, @3, @4]]; 

개체의 모든 것을 줄이지 않아도됩니다.

관련 문제