2016-09-12 2 views
2

가 나는 iMessage를 확장 (MSMessagesAppViewController)에서 CoreData을 읽으려고하지만 AppDelegate에이 없기 때문에도 더 managedContext이 없습니다입니다.iMessage를 확장 및 CoreData

가능하면 누구에게 아이디어가 있습니까? 내 앱이나 그와 비슷한 "AppDelegate를 인스턴스화"할 수 있습니까?

업데이트 :이 어떻게 응용 프로그램 내에서 핵심 데이터에 액세스 할 수 확장 : 이것에 대한 해결책은 컨테이너를 APPGROUP 사용하는 것입니다.

+0

핵심 데이터를 사용하려면 응용 프로그램 위임자가 필요하지 않습니다. 이 두 가지는 완전히 무관하다. –

+0

@TomHarrington 질문에 대한 대답으로 그걸 확대하는 것이 좋습니까? :) –

답변

3

핵심 데이터를 사용하는 것은 응용 프로그램 대리인이 있는지 여부와 관련이 없습니다. 그들은 두 가지 분리 된 것입니다. 이 될 수 있지만 Core Data 나 응용 프로그램 대리인은 필요하지 않습니다. 그렇게하는 것도 좋은 디자인이 아닙니다. 앱 위임자의 임무는 시작, 백그라운드로 진행되는 것과 같은 앱 라이프 사이클 이벤트에 응답하는 것입니다. 앱의 데이터를 관리하는 별도의 작업을 혼동하는 것은 좋지 않습니다.

Xcode에서 새 프로젝트를 만들고 "코어 데이터 사용"확인란을 선택하면 Xcode에서 응용 프로그램의 핵심 데이터를 설정하기위한 응용 프로그램 대리인 클래스의 메서드를 포함합니다. 그러나 코드는 어떤 클래스에서든 사용할 수 있습니다. 코드가 해당 클래스에 있어야하는 앱 위임자에 특별한 것은 없습니다. Xcode가 해당 코드를 해당 클래스에 넣었으므로 그 코드가 이 필요하다는 의미는 아닙니다. 그런 식으로 수행하려면이 필요합니다. 추가 앱 정보에서 핵심 데이터를 사용해야하는 경우 해당 작업을 수행 할 수 있습니다.

일반적인 방법 중 하나는 핵심 데이터를 관리하기위한 새로운 클래스를 만드는 것입니다. 앱 델리게이트 대신 모든 핵심 데이터 스택 관리 코드를 넣으십시오. 앱 대리자는 앱에서이 클래스의 인스턴스를 만들 수 있습니다. 앱 확장 프로그램에서는 확장 유형에 필요한 모든 위치에서 클래스를 인스턴스화 할 수 있습니다.

+0

감사합니다. @TomHarrington, 한편 AppDelegate가 필요 없다는 것을 이해합니다. 그러나 Extension에서 데이터에 액세스하려면 AppGroup 컨테이너가 필요합니다. –

+0

@KevinLieser true이지만 앱 대리인이 없을 때 수행 할 작업에 대한 질문이 구체적으로 나와 있습니다. 제안한 것처럼 앱 위임을 인스턴스화하는 것은 올바른 접근 방식이 아닙니다. –

+0

네, 도와 줘서 고마워! –