0

私は、コア データ エンティティ間の関係を機能させるために、この 1 つのタスクに数日間取り組んできました。私はこれを達成しましたが、新しい属性値がその関係を既存のオブジェクトに追加するように変更する必要があります。これは 1 対多のデー​​タベースです。

既存のオブジェクトに関係を追加する方法がわかりません。RoutineDetail に追加される新しいオブジェクトでは、ルーチン Entity に既に存在するオブジェクトとの関係をどのように作成すればよいでしょうか?

新しく追加されたオブジェクトに関係を追加する方法を示すいくつかの例を見てきましたが、 の新しいオブジェクトが にRoutinesDetails既に存在する値と関係を持つようにする必要がありRoutinesます。

の値はRoutines、という文字列に保持されますRoutineText

rout is the NSmangedObject for the entity Routines

routDet is the NSmanagedObject for the entity RoutinesDetails

両方の新しいオブジェクトが作成されたときに関係を追加できるようにするコードをコメントアウトしたままにしておきます。

これは私のプロジェクトでやらなければならない最後のことですが、私は正気ではありません。ここでの修正に永遠に感謝します。これは最高の知識ポータルであるため、アドバイスをいただければ幸いです。ありがとうございました。

 NSManagedObjectContext *context = [self managedObjectContext];

    // Create a new device
    ExcerciseInfo *info = [_fetchedResultsController objectAtIndexPath:indexPath];

//rout = [NSEntityDescription insertNewObjectForEntityForName:@"Routines" inManagedObjectContext:context];

    routdet = [NSEntityDescription insertNewObjectForEntityForName:@"RoutinesDetails" inManagedObjectContext:context];

    //Add attribute values
    //[rout setValue: RoutineText  forKey:@"routinename"];
    [routdet setValue: info.name  forKey:@"image"];

    //Create Relationship
    [rout addRoutinedetObject:routdet];

ここに画像の説明を入力

4

1 に答える 1

0

あなたの主な問題の声明は、ここにあると思います:

RoutinesDetails の新しいオブジェクトが、Routines に既に存在する値と関係を持つようにする必要があります。

あなたのデータモデルは次のようになっていると思います:

Routine <----> RoutineDetail

つまり、1 つのルーチンごとに 1 つのルーチンの詳細 (1 対 1 の関係) があります。

しかし、これは本当に意味がありません。Routine エンティティに RoutineDetail の属性を単純に含めることができます。

それ以外の

desiredValue = routineDetail.routine.value;

あなたは単に持っているでしょう

desiredValue = routineDetail.value;

また、コードには多くの問題があることに注意してください。最初の行は完全に不要です。使用するだけ self.managedObjectContextです。さらに、規則に反して、変数に大文字のイニシャルを使用しています。これらはクラス名用に予約する必要があります。関係を追加する方法も正しくありません。

メソッドを呼び出さずに、次のような関係を追加できます。

routineObject.detail = detailObject;
于 2013-07-17T15:16:21.450 に答える