2011-10-11 3 views
5

저는 학교에있는 사람들을위한 코스 시간표를 만드는 신청서를 만들고 있습니다. 이것은 응용 프로그램에서 염두에 두었던 거친 디자인입니다.NSDocument와 CoreData가 가능한 조합입니까, 아니면 NSPersistentDocument가 유일한 방법입니까?

개인의 시간표를 나타내는 NSDocument 하위 클래스를 원합니다. 아이디어는 그들이 문서를 열고 수영장에서 시간표에 코스를 추가 한 다음 저장, 공유, 열기 등을 추가 할 수 있기 때문에 시간표는 사용자가 선택한 외부 파일에 저장됩니다.

CoreData를 사용하여 학생들이 선택할 수있는 모든 과정을 저장하고 싶습니다. 이것들은 시간표의 생성과 편집으로 변경되지 않고, 코스 정보에 대한 업데이트를 확인할 때 응용 프로그램을 시작할 때만 가능할 것입니다.

이것은 내 앱을 구성하는 논리적 인 방법 인 것 같습니다. 문제는 NSDocument 기반 응용 프로그램을 만들고 use CoreData 상자를 검사 할 때 CoreData 기능이있는 NSDocument 기반 응용 프로그램을 만드는 대신 NSPersistentDocument 기반 응용 프로그램으로 만듭니다.

나는 이것이 내가 원하는 행동이라고 생각하지 않는다. CoreData를 사용하는 방법이 있지만 여전히 NSDocument 기반 응용 프로그램이 있습니까? 또는 결국 NSPersistentDocument 무엇입니까 사용해야합니까? NS * Document 사업 전체를 오해하고 있습니까? 내 신청서 구조에 대한 조언이 있으십니까?

도움 주셔서 감사합니다.

+0

당신은 핵심 데이터를 사용하여 학생들이 선택할 수있는 모든 강좌를 저장하고자한다고 말합니다. 코어 데이터를 사용하여 개별 학생의 시간표를 NSDocument 클래스에 저장 하시겠습니까? NSPersistentDocument를 사용할지 여부를 결정하는 두 번째 질문이라고 생각합니다. – paulmelnikow

+0

@noa : 아니요, 학생이 선택한 외부 파일에 학생의 시간표를 저장하려고합니다. –

+0

plist 또는 keyed archiver와 같은 것을 사용하면, 나는 당신이 의미하는 것 같아요? 사용자가 별도의 파일을 선택하고 코어 데이터를 계속 사용하게 할 수 있습니다. NSPersistentDocument가 도움이되는 것입니다. – paulmelnikow

답변

2

예, NSPersistentDocument을 사용하지 않고 코어 데이터를 사용할 수 있습니다. NSPersistentStoreCoordinatorNSManagedObjectContext을 직접 인스턴스화하십시오. 다음은 몇 가지 코드입니다. how do you create a NSManagedObjectContext

NSDocument 인스턴스간에 카탈로그의 인스턴스를 공유하고 각 문서와 함께 카탈로그를 보존하지 않으려면이 방법을 사용하는 것이 좋습니다. 귀하의 응용 프로그램 또는 응용 프로그램 대리인은 코스 카탈로그를로드 할 수 있으며 문서는 개별 학생의 시간표를로드하고 저장하는 데 도움이됩니다. 열쇠가있는 아카이버를 사용하거나 말하며 직접 plist를 작성하여 구현해야합니다.

대신 원하는 경우 코어 데이터를 활용할 수 있습니다. 학생들의 일정을 NSManagedObject s로 표시하고 NSPersistentDocument이 컨텍스트로드 및 저장을 처리하도록하십시오. 실행 취소 - 다시 실행과 같은 유용한 기능이 무료로 제공됩니다.

+0

아, 확장 해 주셔서 감사합니다. 나는 원래의 질문에 충분한 설명을 포함 시켰다고 생각하지 않는다. 감사! –