2015-02-04 2 views
1

코어 데이터로 고생하는 IOSb newb. Xcode 샘플 프로젝트는 핵심 데이터를 응용 프로그램 대리인에 넣습니다. 그런 다음 응용 프로그램 delegate.m 파일에서 application didFinishLaunchingWithOptions: 메서드 내에서 핵심 데이터 파일 인 controller.managedObjectContext = self.managedObjectContext;이 호출되어 주 컨트롤러의 managedobjectcontext가 실행됩니다.IOS/xcode : 응용 프로그램 대리인의 코어 데이터를 모델 클래스로 이동

그러나 앱 델리게이트 파일은 핵심 데이터를 넣어야하는 곳이 아니라 모델 파일에 넣고 싱글 톤으로 불러야한다는 것을 읽었습니다.

내 응용 프로그램 대리인 파일에서 application didFinishLaunchingWithOptions: 메서드가없는 파일로 옮기는 경우 문제가 발생합니다. 즉, 다른보기 컨트롤러에서 관리 대상 개체 컨텍스트를 사용할 수 있는지 확인하는 방법은 무엇입니까? 즉, 모든 핵심 데이터 항목이 모델 파일에있는 경우 컨트롤러 파일에서 해당 데이터를 호출하는 올바른 구문은 무엇입니까 아니면 모델 파일의 컨트롤러 파일에서 사용할 수있게 만들지는합니다.

이 문제는 2 주 동안 나를 미치게 만들었으므로 어떤 제안이라도 대단히 감사 할 것입니다.

답변

1

이 예를 참조하십시오 : http://www.objc.io/issue-10/networked-core-data-application.html

GitHub의에 대한 소스 코드에 링크가, 별도의 모델 클래스 PersistentStack에 AppDelegate에에서 coreData 코드를 이동 한 가지 방법을 보여줍니다. 이 예에서 AppDelegate는 PersistentStack 인스턴스를 통해 간접적으로 관리되는 개체 컨텍스트에 대한 참조를 유지 관리합니다.

모듈화 코드는 모듈화 필요성에 따라 별도의 클래스로 구분할 수있는 여러 가지 방법이 있습니다.

+0

나는 튜토리얼을 보았지만 의심의 여지없이 시도한 다른 튜토리얼과 유사하지만 일반 원칙을 이해하려고 노력하고있다. 관리 객체 컨텍스트 등을보기 컨트롤러에서 사용 가능하게 만드는 코드를 제안 할 수 있습니까? 모델 클래스에 코드를 삽입했는지 또는보기 컨트롤러에서로드 또는 유사한 라이프 사이클 메소드가 실행 되었습니까? 앱 델리 케이트 버전에서 코드는 앱 대리인 applicationdidfinishlaunching 즉 핵심 데이터 스택과 동일한 파일에 있지만 nsobject를 서브 클래스하는 모델 파일에 삽입하면 라이프 사이클 메소드가 없습니다. 도움!!! – user1904273

+0

죄송합니다. 귀하의 우려를 이해하지 못했습니다. AppDelegate의 applicationDidFinishLaunching에서 managedObjectContext를 개별 모델 객체로 가져 오는 것을 실제로 옮길 필요는 없습니다. 나는 이것이 행해진 것을 보지 못했습니다. 위의 예제와 같은 다른 클래스의 managedObjectContext를 생성하기위한 실제 코드를 보았습니다. 일반적으로 전체 응용 프로그램에 대해 하나의 managedObjectContext 만 사용하고, AppDelegate에서 설정 한 다음 managedObjectContext를 사용하여 viewController에 속성을 설정하여 다른 viewController에 전달합니다. – user3435374

+0

이 필요한 경우 모델 개체의 init 메서드를 재정의 할 수 있습니다.이 코드는 applicationDidFinishLaunching에 있습니까? UINavigationController * navigationController = (UINavigationController *) self.window.rootViewController; IDTVC * 컨트롤러 = (IDTVC *) navigationController.topViewController; controller.managedObjectContext = self.managedObjectContext; 모델을 포함하고 있지만 마지막 줄에 오류가 있습니다. – user1904273