0

私は 4 エンティティの 1 対多の関係を持っています。

フェッチと述語に問題があります。正しい最初のエンティティ データ (RecordDate) を取得できました。このオブジェクトself.recordDateを使用します。その後、多くの RecordWorkouts をフェッチします。

私のコードは以下です:

    self.recordDate = [self.recorddates objectAtIndex:0];
    NSLog(@"Date: %@", self.recordDate.date);



    NSFetchRequest *fetchWorkoutRequest = [[NSFetchRequest alloc] initWithEntityName:@"RecordWorkout"];
    NSPredicate *predicateWorkout = [NSPredicate predicateWithFormat:@"recordDate = %@", self.recordDate];
    NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"recWorkoutName" ascending:YES];
    [fetchWorkoutRequest setSortDescriptors:@[sortDescriptor]];
    [fetchWorkoutRequest setPredicate:predicateWorkout];

    self.recordworkouts = [[managedObjectContext executeFetchRequest:fetchWorkoutRequest error:nil] mutableCopy];

    self.recordWorkout = [self.recordworkouts objectAtIndex:0];

    NSLog(@"Workout: %@", self.recordWorkout.recWorkoutName);

RecordDate エンティティに関連付けられた RecordWorkout を取得できました。これは、RecordWorkout にオブジェクトが 1 つしか保存されていない場合にうまく機能します。

ただし、RecordWorkout に複数保存されている場合は、それらすべてを取得します。

このフェッチ内にセカンダリ NSPredicate を追加して、たとえば、workoutLabel.text と等しい recordWorkout のみをフェッチすることは可能ですか?

ありがとう

4

1 に答える 1

0

必要な方への回答です。

Predicate 内には、次の 2 つの要求を含めることができます。

NSPredicate *predicateWorkout = [NSPredicate predicateWithFormat:@"recordDate = %@ AND recWorkoutName == %@", self.recordDate, testLabel2.text];
于 2013-09-10T20:30:26.877 に答える