0

私が持っているいくつかのデータとの1対多の関係を作成しようとしています。

単一Projectのアイテムと複数のアイテムがあり、それらを保存するようにコントローラーをセットアップしようとしていますが、1 対多の関係を使用したのはこれが初めてで、頭が爆発しそうです。

これは私の保存方法がどのように見えるかです

- (void)writeProj:(NSArray *)recivedProData ItemsData:(NSArray *)itemsData  {
    // WRITE TO CORE DATA
    NSManagedObjectContext *context = [self managedObjectContext];    

    for (NSDictionary *dict in recivedProData) {
    Project *project = [NSEntityDescription insertNewObjectForEntityForName:@"Project" inManagedObjectContext:self.managedObjectContext];        

        project.projectNumber = [dict valueForKey:@"ProjectNumber"];
        project.projectDescription = [dict valueForKey:@"Description"];
//        project.items = [dict valueForKey:@""]; // this is the relationship for project        
    }

    for (NSDictionary *dict in itemsData) {
    Items *items = [NSEntityDescription insertNewObjectForEntityForName:@"Items" inManagedObjectContext:self.managedObjectContext];

        items.description = [dict valueForKey:@"Description"];
        items.area = [dict valueForKey:@"Area"];
        items.stage = [dict valueForKey:@"Stage"];
//        items.project = [dict valueForKey:@""]; // this is the relationship for items                 
    }    

    NSError *error = nil;

    if (![__managedObjectContext save:&error]) {
        NSLog(@"There was an error! %@", error);
    }
    else {
        NSLog(@"created");
    }

    [Project addItemsObject:items];

    [__managedObjectContext saveOnSuccess:^{

        NSLog(@"You created a relationship");

    } onFailure:^(NSError *error) {

    NSLog(@"There was an error! %@", error);

    }];        
}

だから私は 1 つとProject多くを持っItemsています。キーフィールドを設定して、1 つのプロジェクトと多くのアイテムとしてコア データに保存する方法がわかりません。

うまくいけば、私のコードは理にかなっています。誰かがそれを適切に保存する方法を理解するのを手伝ってくれたら、それは大歓迎です.

4

2 に答える 2

1

作成したプロジェクトと同じになるように items.project を設定NSManagedObjectするだけです

items.project = project;

編集: プロジェクトが 1 つしかない場合は、Project* project宣言をrecivedProDatafor ループの外に移動する必要があります。辞書ごとに 1 つのプロジェクトを作成し、これまでに 1 つのプロジェクトしかないと言います。ただし、プロジェクトが 1 つしかない場合、このコード ブロック全体は意味がありません。なぜ、Project1 つの辞書だけでなく、データの配列があるのでしょうか。

于 2013-09-29T00:44:29.867 に答える