2014-02-19 4 views
0

내가 올바르게 이해했는지 확인하십시오.CoreData - Relatioship 객체를 사용하여 요청 가져 오기

엔티티 'person'과 엔티티 'credit_card'가 있다고 상상해보십시오. 따라서 하나의 '사람'은 개가 많으며의 신용 카드를 가질 수 있습니다. 이름 : STRING연령 : INT 와의 관계 : creditcards (많은에)

및 신용 카드 실체가 역 : card_number 속성을 :

사람 엔티티는 속성을 가지고 INT을 및 valid_date : DATE과 관계 : card_user (하나) 내가 HA 코드 내에서

역 f.e라는 특정 사람 (ManagedObject). 사람 * currentUser.

NSPredicate *predicate1 = [NSPredicate predicateWithFormat: 
@"valid_date == <NSDate object>"]; 

NSPredicate *predicate2 = [NSPredicate predicateWithFormat: 
@"ANY card_user like currentUser"]; 

이 술어가 잘 작동 : 지금 특정 'valid_date'이 특정인 의 모든 신용 카드를 얻고 싶은 경우에 나는 다음과 같은 술어 (법인 'CREDIT_CARD'에 대한) 페치 요청을 만들 것 그게 옳은가? 내가 정말로 물어야한다 : "ANY 관계 이름ManagedObject"같은가? 답

관련

+0

처럼 하나에 두 조건을 결합 할 수 [자 NSPredicate predicateWithFormat : "card_user == %의 @와 valid_date == %의 @"@ , currentUser, 날짜] –

답변

0

난 당신이 정확하게 원하는 것을 이해하고있어 경우에 대한 감사는 당신이해야 할 모든 당신의 Person *currentUsercreditcards 속성을 사용하고 아래로 필터링되어

NSSet *setOfCreditCards = currentUser.creditcards; 
NSPredicate *filter = [NSPredicate predicateWithFormat: @"valid_date == %@", date]; 
NSSet *cardsWithValidDates = [setOfCreditCards filteredSetUsingPredicate:filter]; 

이유를 당신은 관계에 대해 CoreData에게 처음부터 다른 쿼리를 만드는 것을 피하는 것이라고 말합니다.

+1

당신은 "특정 'valid_date'"비트를 놓쳤습니다 ... –

+0

내가 그랬어! 고정 응답 ... – StaRbUck42

+0

아 아 ~ ^^. 내 잘못. 인출 요청이 필요 없습니다. 신용 카드에서 올바른 'valid_date'(으)로 신용 카드를 가져와야합니다. 그렇지 않니? –

0

핵심 데이터 모델을 올바르게 설정 한 경우 ANY 키워드를 사용할 필요가 없습니다. 특히 신용 카드는 인물과 관계가 있어야합니다 (이 작업을 수행하지 않았다면 경고를 받아야합니다). 그럼 당신은이

NSPredicate* predicate = [NSPredicate predicateWithFormat:@"person == %@ AND valid_date == %@", currentUser, valid_date]; 
관련 문제