2009-12-15 3 views
6

저는 Core Data에 대한 설명서를보고 Core Data Stack을 배열하여 모든 UITableViewController에 액세스 할 수 있도록하는 방법을 알아 보았습니다. Apple이 제공 한 모든 예제는 AppDelegate에서 구현되도록 보여 주지만 문서가 너무 거칠기 때문에이 방법을 권장하지 않습니다! link을 참조하십시오. AppDelegate에서 ManagedObjectContext를 얻는 데 혼란스러운 내용이 있습니다.

내 문제는 내가위한 ManagedObjectContext 엔티티를 검색 할 수 TopSongs에 표시된 코어 데이터의 예에 따라, 디자인 패턴을 반복 한 것입니다 (이 아이폰 SDK 문서에 언급되지 않은 이유는 다른 신비) 자식 테이블보기 및 다음 오류가 생성됩니다 ... 엔티티 이름 '송'에 대한 NSManagedObjectModel을 찾을 수 없습니다. 이상하게도 이것이 부모 테이블 뷰에서 발견 될 수 있으므로 AppDelegate의 핵심 데이터 스택이 처리 되었기 때문에이를 가정합니다.

누구나 Recipies, CoreData Books 및 Locations에서 만든 것과 다른 디자인 패턴을 따르는 좋은 예를 알고 있습니까? 이 모든 것은 같은 패턴을 따른다.

내가 원했던 것은 원본 데이터를 검색하고 정렬은 chid tableview의 다른 기준과 다릅니다.

답변

4

사람들이 코어 데이터 스택 배치를 선호하는 부분에 대한 중요한 토론이 this question입니다. 스택을 싱글 톤 (singleton) 내에 배치하는 경향이있다. 이를 통해 응용 프로그램 내에서 필요할 때마다 스택에 편리하게 액세스 할 수 있습니다.

귀하의 문제만큼, 핵심 데이터 스택의 요소가 할당 취소 된 가능성은 거의 없습니다. 우선 현재보고를 되 찾는 것보다는 컨텍스트 또는 모델에 메시지를 보내는 것이 충돌 할 수 있습니다. 애플리케이션의 다른 곳에서 "Song"엔티티에 액세스 할 수 있다면 모델 컨텍스트를 모델 인스턴스를 필요로하는 인스턴스로 적절하게 전달하지 않을 것입니다.

+1

Brad 나는 싱글 톤 접근 방식을 너무 좋아한다. 어쨌든 대부분의 애플 리케이션에서 애플 리케이션 상태 핸들링을 위해 싱글 톤을 사용하는 경향이있다. 애플의 예는 그렇게 간단하지 않게 만든다. – paulthenerd

+0

싱글 톤에 코어 데이터를 넣는 것은 정확하게 내 직감이 말한 것입니다. 앱 델리게이트에 대한 애플의 예는 첫 번째 뷰 컨트롤러가 아닌 다른 것에서 관리하기가 너무 복잡해 보입니다. 감사. 나는 프로젝트를 구조 조정하는 것이 이것을 해결할 것이라고 확신한다. – Jim

+0

방금 ​​애플의 디자인 가이드 라인에 따라 구현했지만, 제대로 된 것은 아닙니다. 다음 번에는 싱글 톤 접근 방식을 사용할 예정입니다. – mvexel

0

개체 모델에서 노래라는 엔티티를 선언하지 않았기 때문에 여기에 문제가 있습니다 ... 다음 패턴은 그걸 처리하지 않습니다 ... 핵심 데이터와 개체 모델 here. 희망이 당신을 도울 것입니다

1

IIRC 애플의 예제는 애플 리케이션 대리인의 코어 데이터 스택을 초기화하지만 실제로 볼 컨트롤러의 속성을 설정하여 ManagedObjectContext를 참조하고 애플 리케이션로드시이를 설정합니다 - 애플의 워드 프로세서가 무엇을 말하는지 App Delegate에서 직접 ManagedObjectContext를로드하려고 시도하는 대신 비슷한 작업을 수행해야합니다.

일부 코드를 게시하면 오류로 인해 발생한 상황을 쉽게 파악할 수 있습니다. 제일 먼저 점검해야 할 점은 컨트롤러의 ManagedObjectContext에 대한 참조가 0이 아니라는 것입니다.

+0

감사합니다. 나는 새로운 ManagedObjectContext를 다시 후속 viewController를 호출 할 수 있다고 생각합니까? – Jim

관련 문제