Если я четко понимаю, вам нужно выбрать все ExerciseScore для спортсмена, но у спортсмена нет прямой связи с таблицей ExerciseScore.
SLQ Запрос для этого может выглядеть так:
Select *
from ExerciseScore
where IDScore in (select IDScore
from Exercise
where IDExercise in (select IDExercise
from Athlete
)
)
Но в Core Data вы не можете управлять SLQ запросов. Попробуйте этот подход.
1.Fetch все упражнения для спортсмена:
NSError *error;
NSFetchRequest *request = [[NSFetchRequest alloc] initWithEntityName:@"Exercise"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF.athlete = @%", currentAthlete];
request.predicate=predicate;
NSArray *athleteExercises = [self.managedObjectContext executeFetchRequest:request error:&error];
2.Iterate по всему спектру упражнений, чтобы получить все упражнение балл для каждого упражнения.
NSMutableArray *allScores = [NSMutableArray arrayWithCapacity:0];;
for (Exercise *exercise in athleteExercises) {
if ([exercise.scores count]>0) {
[allScores addObjectsFromArray:[exercise.scores allObjects]; //exercise.scores must be NSSet type
}
}
allScores
массив теперь содержит все ExerciseScore
объектов для конкретных Athlete.