2

3 つの異なるエンティティ entity1、entity2、および entity3 に対する 3 つの一対多の関係を持つエンティティ mainEntity があります (関係は、参照しているオブジェクトにちなんで名付けられています)。

entity mainEntity
attribute name
relation entity1
relation entity2
relation entity3

これら 3 つのエンティティは、この mainEntity と 1 対多の逆の関係にあります (すべて同じです。最初の例を次に示します)。

entity entity1
attribute name
relation mainEntity

つまり、全体として、1 つの mainEntity からの 3 つの多対多の関係です。

ここで、mainEntity の 3 つの関係を、entity1、entity2、および entity3 のインスタンスである object1、object2、および object3 に設定する必要があります。

私はこれを行うことはできません:

MainEntity *myEntity = (MainEntity *)[NSEntityDescription
insertNewObjectForEntityForName:@"myEntity" inManagedObjectContext:context];
[myEntity setEntity1:object1];
[myEntity setEntity2:object2];
[myEntity setEntity3:object3];

コンソールには次のように表示されます: 対多関係の許容できないタイプの値: プロパティ = "entity1"; 必要なタイプ = NSSet;

それらを適切に設定する方法は?

4

1 に答える 1

2

1 つのエンティティを1対多の関係に割り当てようとしているように思えます。entity1entity2、およびentity3to が一度に 1 つのエンティティを指すことだけを意図している場合、これを修正する最も簡単な (そして正しい) 方法は、これらの関係を 1 対多から 1 対 1 に変更することです。ただし、これらのそれぞれを 1 対多の関係にしたい場合は、

[myEntity setEntity1:object1];
[myEntity setEntity2:object2];
[myEntity setEntity3:object3];

次の自動生成された対多リレーションシップ ミューテーター メソッドを使用

[myEntity addEntity1Object:object1];
[myEntity addEntity2Object:object2];
[myEntity addEntity3Object:object3];

詳細については、Core Data Programming GuideのManaged Object Accessor Methodsを確認してください。

于 2011-07-15T23:55:34.037 に答える