0

私は次のコアデータモデルを持っています:

コア データ モデル

つまり、各 ItemCategory はproject(reverse: categories) に属し、オプションで親 ItemCategory ( category, reverse subcategories) に属することができます — 残りは無視してください。

問題は、ItemCategory のプロジェクトと親カテゴリの両方を設定できないようです。1 つの関係を設定するたびに、もう 1 つの関係は nil に設定されます。削除ルールのすべての組み合わせを試しましたが、何もうまくいかないようです。

私が認識していない基本的な Core Data の制限はありますか、それとも何か間違っていますか?

4

2 に答える 2

1

2 つのエンティティ間に複数の対多関係を設定できます。重要なことは、各関係には独自の逆があるということです。エンティティABがあり、それらの間に 2 対多の関係が必要だとします。出来るよ。

から始めましょう

A <<----->> B

あなたの Aエンティティは、bsと呼ばれる関係を持ち、 と呼ばれる逆になります。これまでのところ、すべて正常です。

ただし、別の関係を追加することを妨げるものは何もありません。

  <<----->>
A           B
  <<----->>

2 番目の関係では、 AからBへの関係をotherBsと名付け、その逆をotherAsと名付けます。

ここで、 AはBに対して2 つの関係、つまりbsotherBsを持ちます。そして、同じことが他の方法での関係にも当てはまります。

于 2012-08-22T20:03:42.663 に答える
0

私は「何か間違ったことをしている」に投票します。:)私は、プロジェクト、ItemCategory、属性なし、他のエンティティなし、独自の関係を使用して、これの最も単純な形式を試しました...そして、その症状は見られません。これ...

   Project *p = [NSEntityDescription insertNewObjectForEntityForName:@"Project" inManagedObjectContext:self.managedObjectContext];
   ItemCategory *c1 = [NSEntityDescription insertNewObjectForEntityForName:@"ItemCategory" inManagedObjectContext:self.managedObjectContext];
   ItemCategory *c2 = [NSEntityDescription insertNewObjectForEntityForName:@"ItemCategory" inManagedObjectContext:self.managedObjectContext];
   c1.category = c2;
   c1.project = p;

...与える...

(lldb) po c1.category (ItemCategory *) $2 = 0x06b98bd0 <ItemCategory: 0x6b98bd0> (entity: ItemCategory; id: 0x6b98ee0 <x-coredata:///ItemCategory/tB2F1219F-4FA5-48DA-871E-D9F9DC8E33E34> ; data: {
    category = nil;
    project = nil;
    subcategories =     (
        "0x6b82280 <x-coredata:///ItemCategory/tB2F1219F-4FA5-48DA-871E-D9F9DC8E33E33>"
    ); })
(lldb) po c1.project (Project *) $3 = 0x06b97a20 <Project: 0x6b97a20> (entity: Project; id: 0x6b97a70 <x-coredata:///Project/tB2F1219F-4FA5-48DA-871E-D9F9DC8E33E32> ; data: {
    categories =     (
        "0x6b82280 <x-coredata:///ItemCategory/tB2F1219F-4FA5-48DA-871E-D9F9DC8E33E33>"
    ); })

残念ながら、これはが間違っているのかを明らかにするものではありませんが、本質的に制限があるようには見えません。

于 2012-08-21T23:49:01.243 に答える