0

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];
4

2 に答える 2