2012-02-07 22 views
2

コアデータMOCとエンティティを他のView Controllerに渡すためにseguesを使用しようとしています。コアデータオブジェクト注入(依存関係あり)ストーリーボード

だから私は、私は、その後場合は、同じビューコントローラ

//rootEntity is -- TheManagedObject * rootEntity in the second view controller 
svc.rootEntity = currentEntity 

にcurrentEntityを渡すが、私はよく分からないしたいprepareForSegueメソッドを使用して、この

SecondViewController *svc = (SecondViewController *)[segue destinationViewController]; 

//passing the current managed object context to the other view controller 
svc.managedObjectContext = managedObjectContext 

のようなものをやっています上記のsvc.rootEntityは正しい方法ですが、次のView ControllerにcurrentEntityを注入する正しい方法のように感じます。

2番目のビューコントローラでは、上記のrootEntityインジェクションに基づいてエンティティ用の新しいオブジェクトを挿入します。

は、私は通常、これを行うことにより、新たな管理オブジェクトを作成します知っている:

NSManagedObject *newObject = [NSEntityDescription insertNewObjectForEntityForName:@"TheNewObject" in  ManagedObjectContext:managedObjectContext //MOC injected from the First View Controller 

私の問題は、私は上記のnewObjectをしたいということですが、私はそれが渡された最初の(関係)に依存になりたいですエンティティ(上記のrootEntity)

私が近づいてきましたが、私は次のステップでは、上記を繰り返してのNewObjectに基づいて、次のビューコントローラに別のレベルを挿入することであろう関連付けられていないNewObjects(多くの1つでなければなりません)

を得続けます2番目のビューコントローラで

私はZarraの本といくつかの他の人たちを読んだことがありますが、それらはすべて、セグを扱えないようなinitメソッドを使用しています。

おかげで、

答えて

1

すべてを正しく実行しています。新しいビューコントローラに入ったら、新しいエンティティとリレーションシップを挿入するときと同じように処理を進めるだけです。結局のところ、あなたはと同じの管理オブジェクトコンテキストを参照しています。

NSManagedObject *newObject = [NSEntityDescription 
    insertNewObjectForEntityForName:@"SubEntity" 
    inManagedObjectContext:managedObjectContext]; 
newObject.rootEntity = self.rootEntity; 

種類「サブエンティティ」のでnewObjectが今rootObjectに関連付けられている:あなたはこのような何かをするだろうな関係である新しいエンティティを挿入したいのであれば、たとえば、

+0

完全に感謝しましたが、最終的にコアデータを手に入れたような気がします。 – jamesC

1

私は絵コンテとは思わないかseguesはあなたの問題とは何かを持っています。

関係を確立するコードはどこにありますか?あなたは、単に関係の多くの端からやって

[self.rootEntity addNewObjectsObject:newObject]; 

または、単純に行くことができる必要があります:

newObject.rootEntity = self.rootEntity; 

(私はここでは関係名を想定しています注意してください)。

ボーナスとして、管理オブジェクトコンテキストを渡す必要はありません。これはrootEntityオブジェクトから取得することができます。すべての管理オブジェクトはコンテキストを参照しています。rootEntity.managedObjectContext

+0

ああ、私は文脈にも合格しなければならないと思った。少ないコード=より良いコード。時間をとっていただきありがとうございます。 – jamesC

関連する問題