2011-06-22 11 views
3

私は管理されたコンテキストで正しく定義されたエンティティクラスを持っています。 このクラスは、別のクラスと1対多の関係を持ちます。CoreDataはクラス関係の作成をどのように管理しますか?

Xcode 4のグラフィック施設で派生クラスが正しく作成され、その関係はNSSetで表されます。

どのように関係クラスの作成が管理されているのだろうか。 私はNSSet中関係について

NSManagedObject *newEntity = [NSEntityDescription 
insertNewObjectForEntityForName:@"EntityName" 
inManagedObjectContext:context]; 

しかし、何を使用しています主なエンティティを作成するために、意味ですか?私はそれを親エンティティと同じ方法で作成し、定期的にNSSetに格納する必要がありますか?

NSManagedObject *child = [NSEntityDescription insertNewObjectForEntityForName:@"ChildName" inManagedObjectContext:context]; 

NSSet *childSet = [..set creation with child..]; 
newEntity.child = childSet; 

// save newEntity in context 

「はい」の場合、NSSetはオブジェクトなので、コンテキストから開始する必要はありません。このような質問は、エンティティのすべての「通常の」プロパティに適用できます.NSStringもオブジェクトです。なぜ単純なnewEntity.prop = @ ""で十分ですか?

答えて

3

多対多関係NSManagedObjectには、使用するセットを返すmutableSetValueForKey:メソッドがあります。 newEntitychild上記のように定義を使用すると、このような何かしたい:

NSMutableSet *childObjects = [newEntity mutableSetValueForKey:@"childRelationship"]; 
[childObjects addObject:child]; 

をしかし、あなたはXcodeのは、あなたのコアデータのエンティティのためのカスタムサブクラスを生成するので、あなたはどのだろうParentクラスで定義された便利なメソッドを持っていると言いましたaddChildObject:のような名前を付けてください。質問を解決するためのおかげでは、...

Parent *parent = [NSEntityDescription insertNewObjectForEntityForName:@"EntityName" inManagedObjectContext:context]; 
NSManagedObject *child = [NSEntityDescription insertNewObjectForEntityForName:@"ChildName" inManagedObjectContext:context]; 

[parent addChildObject:child]; 
+0

オム:あなたは簡単なバージョンで上記を置き換えることができることを使用していますが、このサブクラスのインスタンスとしての代わりに、一般的なNSManagedObjectとしてnewEntityを宣言する必要があります私はXcodeが自動的にいくつかの便利なメソッドを書いていることに気付きました。私はそれについても見ていきます。 – Leonardo

関連する問題