2

私のアプリには、DB を更新するための次のコードがあります。

NSManagedObjectContext *context = [self managedObjectContext];

NSFetchRequest *fetchRequest=[NSFetchRequest fetchRequestWithEntityName:@"Struct"];
        NSError *error = nil;

        for (id element in array){
            [fetchRequest setPredicate:[NSPredicate predicateWithFormat:@"id==%@",[element objectForKey:@"id"]]];

            Struct *struct = [[context executeFetchRequest:fetchRequest error:&error] lastObject];

            if (struct != nil){
                //updating value of attributes
                struct.name = [element objectForKey:@"n"];
                struct.val = [element objectForKey:@"val"];
                struct.pos = [element objectForKey:@"pos"];


            }
             else{
              //create a new identity
             }
         }

それはすべて問題ありませんが、Struct との関係で他の 2 つのオブジェクトがあります。

"Id_Loc" (1 対多) "Details" (1 対 1)

それらを更新する方法がわからない、オブジェクト 'Struct' からそれらを呼び出す方法がわからない 何も見つからない 助けてもらえますか? ありがとう

4

1 に答える 1

3

.name、.val、および .pos を使用しているのと同じように機能します。

1 対 1 の関係はオブジェクトを返し、1 対多の関係は NSSet を返します。

1 対 1 の関係が Struct から Bar へのもので、関係名が bar であるとします。struct.bar を使用して Bar オブジェクトを受け取ります。

編集: 1 対多の関係に新しいオブジェクトを追加する場合は、[struct addFooObject:]; を使用する必要があります。Foo はオブジェクト名です。

于 2014-02-25T15:44:15.930 に答える