저는 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에 대한 액세스 권한을 부여하려면 어떻게해야합니까?
가 무슨 말인지보고, 내가 너무 이상했다 생각하지만 그 사과 튜토리얼도 여기를 참조하는 일이다 (http://developer.apple.com/IPhone/library/documentation/DataManagement/Conceptual/iPhoneCoreData01/Articles/02_RootViewController.html#//apple_ref/doc/uid/TP40008305-CH104-SW11) – conorgriffin
튜토리얼에서 말하는 것은 아닙니다. 구문 분석기는 구문 분석 메시지를 보낼 때까지 구문 분석하지 않습니다. 실제로, 파서를 생성 한 다음 파서를 출시하지 않고 릴리스했습니다. – Giao
그래, 여기서 별도의 문제가 있다고 생각해. 이제는 한 걸음 뒤로 물러났다. 나는 applicationDidFinishLaunching에서 인스턴스화 한 파서와 내가 설정 한 managedObjectContext가 ViewController C의 버튼을 눌렀을 때 나중에 호출되는 것과 같은 인스턴스가 아니라는 것을 알고있다. 왜냐하면이 버튼을 누르면 새로운 객체를 인스턴스화하기 때문입니다. – conorgriffin