2010-02-22 4 views
0

저는 XML 파일을 가져 와서 구문 분석 한 다음 핵심 데이터에 구문 분석 한 객체를 저장하는 iPhone 앱을 작성하고 있습니다. 핵심 데이터에 객체를 저장하는 시점까지 모든 것을 처리했습니다. 나는 그것이 ManagedObjectContext를 참조하는 방법과 관련이 있다고 생각하지만 내가 어디로 잘못 가고 있는지 알 수 없다. 나는 SO question here을 보았지만 여전히 난처한 상태입니다. 나는 Core Data Tutorial for iPhone을 따라 갔고 그 일을했지만, 내 자신의 프로젝트에 배운 것을 적용하는 데 문제가있는 것 같습니다. 내 응용 프로그램의 구조는 튜토리얼의 예제와 다릅니다.내 파싱 코드에 내 ManagedObjectContext에 대한 액세스 권한을 부여하려면 어떻게해야합니까?

내 앱은 세 개의 하위 뷰가있는 UITabBar이며 A, B, C 및 XMLParser라는 XML을 가져 오는 데 사용되는 별도의 클래스 파일을 호출 해 보겠습니다. 이 XML 페칭 클래스는 ViewController 'C'의 버튼을 누르면 호출됩니다.

XML을 구문 분석 할 때, 나는 파싱 된 객체를 즉석에서 Core Data로 저장하려고합니다. 그것은 다음과 같은 오류와 함께 첫 번째 시도에서 실패 내 응용 프로그램 위임에

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 
'+entityForName: could not locate an NSManagedObjectModel for entity name 'Branch'' 

, 나는 다음과 같은 코드 내 XmlParser가 클래스에 관한 한 다음 AppDelegate.m 파일의 상단에

대신 붙여 넣기의
#import "XMLParser.h" 

내부 아래 applicationDidFinishLaunching

NSManagedObjectContext *context = [self managedObjectContext]; 
XMLParser *xmlparser = [[XMLParser alloc] init]; 
xmlparser.managedObjectContext = context; 
[xmlparser release]; 

대규모 천 ks 코드를 지금 질문에 넣으십시오. 누군가 내가 지금까지 작성한 내용을 볼 수 있다면 더 많은 코드 또는 더 나은 설명을 요청하십시오.

편집 : 나는 this SO question에 대한 허용 대답에 모든 것을 확인했지만 나는 내가 실제로 인스턴스화하기 때문에이 모든 구성

덕분에


편집

지금은 그 실현이 ViewController C의 버튼을 누를 때 XMLParser 객체가 발생하면 applicationDidFinishLaunching에 설정된 managedObjectContext가 새로 인스턴스화 된 객체에 적용되지 않습니다. 그렇다면 내 ViewController의 버튼을 눌러 인스턴스화 할 때 XMLParser에 내 응용 프로그램 ManagedObjectContext에 대한 액세스 권한을 부여하려면 어떻게해야합니까?

답변

1

XMLParser 개체를 만들고 해당 관리되는 개체 컨텍스트를 설정합니다. 이건 괜찮아.

그러나 릴리스하십시오. 개체를 사용할 계획이라면 즉시 풀어서는 안됩니다.

UPDATE
당신은 applicationDidFinishLaunching:에서보기 컨트롤러 (들)로 관리되는 개체 컨텍스트를 전달할 수 있습니다. 앱 델리게이트 나 코어 데이터 스택을 관리하는 또 다른 싱글 톤에서 가져올 수도 있습니다.

당신은이 같은 애플 대리자에서 관리되는 개체 컨텍스트를 얻을 수 있습니다 :

gerry3 @
[UIApplication sharedApplication].delegate.managedObjectContext 
+0

가 무슨 말인지보고, 내가 너무 이상했다 생각하지만 그 사과 튜토리얼도 여기를 참조하는 일이다 (http://developer.apple.com/IPhone/library/documentation/DataManagement/Conceptual/iPhoneCoreData01/Articles/02_RootViewController.html#//apple_ref/doc/uid/TP40008305-CH104-SW11) – conorgriffin

+0

튜토리얼에서 말하는 것은 아닙니다. 구문 분석기는 구문 분석 메시지를 보낼 때까지 구문 분석하지 않습니다. 실제로, 파서를 생성 한 다음 파서를 출시하지 않고 릴리스했습니다. – Giao

+0

그래, 여기서 별도의 문제가 있다고 생각해. 이제는 한 걸음 뒤로 물러났다. 나는 applicationDidFinishLaunching에서 인스턴스화 한 파서와 내가 설정 한 managedObjectContext가 ViewController C의 버튼을 눌렀을 때 나중에 호출되는 것과 같은 인스턴스가 아니라는 것을 알고있다. 왜냐하면이 버튼을 누르면 새로운 객체를 인스턴스화하기 때문입니다. – conorgriffin

관련 문제