私のアプリでは、私はUITableViewController
にイベントリストを表示しています。このコントローラーは、ManagedObjectContext Say ParentContext
を使用します。イベントが選択されると、イベントの詳細を編集できる詳細なView Controllerが表示されます。 コアデータ複数レベル親 - 子コンテキスト
NSManagedObjectContext *childContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];
childContext.parentContext = self.context ;
が今再びダウンし、別のドリルを必要とするいくつかのフィールドと関係があります。だから私は
ChildContext with type "NSPrivateQueueConcurrencyType"
ChildContext whose parent Context is "ParentContext".
私のコードがあり、子コンテキストが言う作成しました。だから私は、新しいビューコントローラの別のChildContextを作成している、
GrandChildContext with type "NSPrivateQueueConcurrencyType"
GrandChildContext whose parent context is "ChildContext"
このプロセスは別のレベル(子の親(のtableView)から合計4レベル)
self.context - Parent Context
|
|
ChildContext
|
|
GrandChildContext
|
|
GrandGrandChildContext
のために行くと言います
My Entityはこのようになります
EntityA -- (Edit View Controller - uses ChildContext)
|
|- Field1
|
|- Field2
|
|- RelationShip (1 to Many) - (Relationship Add/Edit View Controller - uses GrandChildContext)
|
|- Field1
| .
| .
|- Field3
|
|- Relationship (1 to Many) - (Relationship Add/Edit View Controller - uses GrandGrandChildContext)
|
|- Field1
|
|- Field2
これはParent - Childコンテキストを使用する正しい方法ですか?ある時点で、私は1 NSMainQueueConcurrencyType MOC and 3 NSPrivateQueueConcurrencyType MOC
のようになります。
そうでない場合は、それ以外の方法はありますか?
子のコンテキストが多すぎると、アプリケーションのパフォーマンスに影響しますか?
当初、私は、ユーザーを管理するためのプロパティとNSArraysを使用するには、データを入力し、ユーザが完了ボタンを押したとき、私は、管理対象オブジェクトを作成/更新します。しかし、これは退屈な仕事で、私のView Controllerを汚いものにしました。だから私は非常に保存/更新を破棄するのは簡単です親子のコンテキストに切り替えました。
おかげ
すべてのドリルダウンでは編集作業があります。私はちょうどドリルダウンのいくつかの保存/キャンセル操作を削減することができた。このモデルでしばらく作業した後、私が見つけた唯一の問題は、作成された関係が親の子では見えないことです。これは、ios 5でのみ発生します。これは既知のバグです。子コンテキストを保存する直前にobtainPermanentIDsを呼び出すことで修正しました。 – krishnan
このコメントを見つけて、obtainPermanentIDs呼び出しを追加しようとすると、私の神、+ krishnan、 –