Core Data を使用しており、次のエンティティと対多の関係があります。
Athlete(evals)<-->>Eval(whosEval)
データベース内のすべてのアスリートを一覧表示するテーブル ビューから始まります。次に、アスリートを選択すると、その評価が表形式で表示されます。問題は、私がこれを行う方法が、フルネームを確認することです。残念ながら、2 人の選手が同じ名前を持つ可能性があります。このため、両親の名前も確認していますが、間違っていると思います。以下が機能しない理由と、正しく行う方法を誰かが説明できますか? このコードで起こることは、2 人のアスリートが同じ名前を持っている場合、結果を共有することです。親の名前が違っても。
AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
_managedObjectContext = [appDelegate managedObjectContext];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSFetchRequest *athleteRequest = [[NSFetchRequest alloc] init];
[athleteRequest setEntity:[NSEntityDescription entityForName:@"Athlete" inManagedObjectContext:_managedObjectContext]];
NSError *athleteError = nil;
NSPredicate *athletePredicate = [NSPredicate predicateWithFormat:@"full == %@", _athletesFullName];
[athleteRequest setPredicate:athletePredicate];
NSArray *results = [_managedObjectContext executeFetchRequest:athleteRequest error:&athleteError];
if([results count] >1){
NSPredicate *athletePredicate = [NSPredicate predicateWithFormat:@"pfull == %@", _athletesParentsFullName];
[athleteRequest setPredicate:athletePredicate];
}
Athlete *athleteSelected;
if([results count] >0){
Athlete *currentAthlete = [results objectAtIndex:0];
athleteSelected = currentAthlete;
}
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"whosEval == %@", athleteSelected];
[request setPredicate:predicate];
NSEntityDescription *eval = [NSEntityDescription entityForName:@"Eval" inManagedObjectContext:_managedObjectContext];
[request setEntity:eval];