If I'm understanding what you want correctly, all you need to do is use the creditcards
property on your Person *currentUser
and filter it down:
NSSet *setOfCreditCards = currentUser.creditcards;
NSPredicate *filter = [NSPredicate predicateWithFormat: @"valid_date == %@", date];
NSSet *cardsWithValidDates = [setOfCreditCards filteredSetUsingPredicate:filter];
The reason you tell CoreData
about relationships is to avoid making another query from scratch.