2013-08-01 2 views
0

내 아이폰 OS 응용 프로그램에 coredata을 가지고,하지만 내 경우에는 다음이 포함 된 질문 테이블 인 테이블에서 모든 값을 모으고있는 중이 야 :CoreData 및 자 NSPredicate

@property (nonatomic, retain) NSString * answerA; 
@property (nonatomic, retain) NSString * answerB; 
@property (nonatomic, retain) NSString * answerC; 
@property (nonatomic, retain) NSString * answerD; 
@property (nonatomic, retain) NSString * correctAnswer; 
@property (nonatomic, retain) NSString * question; 
@property (nonatomic, retain) NSString * timeStampLastUsed; 
@property (nonatomic, retain) NSNumber * gameType; 
@property (nonatomic, retain) NSString * continent; 

I을

NSError *error; 
    NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Questions" inManagedObjectContext:managedObjectContext]; 

    [fetchRequest setEntity:entity]; 

    NSArray *fetchedObjects = [managedObjectContext executeFetchRequest:fetchRequest error:&error]; 

내가 원하는 것은 특정 게임 타입을 가지고있는 NSArray * fetchedObjects에만 질문에 가지고있다 :이 방법은 모든 값을 얻고있다.

NSPredicate로 어떻게 할 수 있습니까? 당신의 인출 요청에 조건을 설정하여

[fetchRequest setPredicate:[NSPredicate predicateWithFormat:@"gameType == %i", 0]]; 

:

감사 안부

답변

1

당신은 당신이 찾고있는 게임 유형의 값을 알고 있다면, 당신은 이런 식으로 뭔가를 사용할 수 있습니다 결과를 필터링하고 관심있는 항목 만 반환합니다.

+1

gameType은 NSNumber 객체이므로 '@ "gameType.intValue == % i", 0'을 수행하는 것이 좋습니다. 일반적으로'intValue'가 생략되었지만 여전히 좋은 습관입니다. – mrosales

+0

이제 나는 더 진보 된 것들을하려고합니다. 유럽 대륙에있는 모든 게임 유형을 얻고 싶습니다 : NSPredicate * predicate = [NSPredicate predicateWithFormat : @ "((gameType.intValue == % i) 또는 (gameType.intValue == % i) OR (gameType.intValue == % i)) AND (continent.intValue == % i)", 0,2,3 , 0]; 그러나 이것은 내가 기대하는 것을 돌려주지 않습니다. 유럽 ​​대륙 (0) 인 게임 유형 0, 2를 얻고 싶습니다. 누구든지 나를 도울 수 있습니까? – mmm

+0

제공된 매개 변수를 사용하면 술어가 정확 해 보입니다. 어떤 결과가 있습니까? 필자는 필터링 된 결과를 테스트하기 위해'predicateWithBlock :'을 만든 다음, 필요한 결과를 얻은 후에 이것을 다시'predicateWithFormat :'으로 리팩토링하는 것이 더 쉽다는 것을 알았습니다. – CaptainRedmuff