내 앱에는 이벤트 목록을 표시하는 UITableViewController
이 있습니다. 이 컨트롤러는 ManagedObjectContext Say ParentContext
을 사용합니다. 이제 어떤 이벤트라도 선택되면 사용자가 이벤트의 세부 사항을 편집 할 수있는 상세보기 컨트롤러가 표시됩니다. 코어 데이터 다단계 상위 - 하위 컨텍스트
NSManagedObjectContext *childContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];
childContext.parentContext = self.context ;
지금 다시 아래로 다른 드릴 필요 일부 필드와 관계가 있습니다 : 그래서 내가
ChildContext with type "NSPrivateQueueConcurrencyType"
ChildContext whose parent Context is "ParentContext".
내 코드는, 아이의 상황에 맞는 말을 만들었습니다. 그래서 나는
GrandChildContext with type "NSPrivateQueueConcurrencyType"
GrandChildContext whose parent context is "ChildContext"
이 프로세스 (아이) 부모 (있는 tableView에서 총 4 레벨) 다른 수준에 간다,라고 새로운 뷰 컨트롤러에 대한 또 다른 ChildContext을 만든
self.context - Parent Context
|
|
ChildContext
|
|
GrandChildContext
|
|
GrandGrandChildContext
내 사업체는 다음과 같이 표시됩니다.
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
이것은 부모 - 자녀 컨텍스트를 사용하는 올바른 방법입니까? 왜냐하면 어느 시점에 나는 1 NSMainQueueConcurrencyType MOC and 3 NSPrivateQueueConcurrencyType MOC
과 같을 것이기 때문입니다.
그렇지 않으면? 다른 방법이 있습니까?
너무 많은 하위 컨텍스트가 앱 성능에 영향을 줍니까?
처음에는 사용자가 입력 한 데이터를 관리하기 위해 Properties 및 NSArrays를 사용했으며 사용자가 완료 버튼을 클릭하면 관리되는 개체를 업데이트/생성합니다. 그러나 이것은 지루한 작업으로 인해 내 View Controller가 더러워졌습니다. 그래서 부모/자식 컨텍스트로 전환하여 저장/저장을 쉽게 취소 할 수 있습니다.
감사
모든 드릴 다운에는 편집 작업이 있습니다. 나는 드릴 다운의 일부에서 몇 가지 저장/취소 작업을 줄였습니다. 이 모델로 얼마 동안 작업 한 후에 발견 된 유일한 문제는 생성 된 관계가 상위 하위에 표시되지 않는다는 것입니다. 이것은 ios 5에서만 발생합니다. 이것은 알려진 버그이며 자식 컨텍스트를 저장하기 직전에 obtainPermanentIDs를 호출하여 해결했습니다. – krishnan
이 코멘트를 발견하고 obtainPermanentIDs 호출을 추가하기 전에 제 머리글 절반을 찢어 버렸습니다. –