2

私はコアデータアプリケーションを作成しています:

categoryエンティティには次の属性があります

catid:int

catname:string

randomrelation:to-many rel to brandom entity

brandom属性を持つ別のエンティティです

cid:categoryエンティティ

いいえ:int

arr:int

私のコードは次のとおりです

category *c=[NSEntityDescription insertNewObjectForEntityForName:@"category" inManagedObjectContext:context];

for (int i=0; i<[arrayofnumbers count]; i++) {
                
    brandom *r=[NSEntityDescription insertNewObjectForEntityForName:@"brandom" inManagedObjectContext:context];
    c.catid=[NSNumber numberWithInt:i];
    r.cid=c;
    r.no=[NSNumber numberWithInt:i+1];
    int objectatindex=[[arrayofnumbers objectAtIndex:i] intValue];
    NSLog(@"object at index:%i",objectatindex);
    r.arr=[NSNumber numberWithInt:objectatindex];
    [set addObject:r];
}

c.randomrelation=r;
NSLog(@"set element count=%i",[set count]);
if (![context save:&error]) {
    NSLog(@"%@",[error localizedDescription]);
}
4

1 に答える 1

2

あなたの質問を理解したかどうかはよくわかりません。

タイトルの質問について、相対関係にリンクされているさまざまなエティティのデータを保存する必要があるかどうかを尋ねる場合、答えは状況によって異なります。

プロパティ(関係)がオプションとして宣言されている場合(1)、アプリケーションのライフサイクル内のさまざまな時点でこれを行うことができます。宣言した場合は、同時に設定する必要があります(2)。

したがって、最初のケース(1)で設定できる場合は、categoryエンティティを作成randomrelationし、別の時間にその関係を設定します。2番目の方法では、Core Dataで整合性エラーが発生するため、両方を同時に設定する必要があります。

モデルに関する注意事項。

Category最初に、たとえばの代わりにクラス名のようなエンティティを呼び出し、categoryキャメルケース表記を採用します。

次に、からBrandomへの逆関係を作成しCategoryます。逆関係を使用すると、グラフの一貫性を維持できます。モデルには、オプションとして宣言されるCategoryto-many relがあり、 。への逆および非オプションrel(1対1)があります。これにより、0個以上のを作成できますが、を使用ずに「ライブ」することはできません。BrandomBrandomCategoryCategoryBrandom BrandomCategory

お役に立てば幸いです。

于 2012-06-14T09:35:31.267 に答える