문서 기반 코어 데이터 애플리케이션이있는 것처럼 보입니다. 항목 라이브러리를 보유하기 위해 전역 영구 저장소에 대한 지원을 추가하고 싶습니다.코어 데이터 글로벌 영구 저장소를 사용하는 문서 기반 애플리케이션
관련 문서의 대부분을 읽었으며 관리 대상 개체 모델에서 구성을 사용해야한다는 것을 알고 있습니다. "DocumentConfiguration"과 "LibraryConfiguration"의 두 가지 구성을 정의했습니다. 문서 구성의 엔티티는 문서 구성에만 있고 라이브러리 구성의 엔티티는 라이브러리 구성에만 있습니다 (즉 겹치지 않음).
그러면 "코디네이터를 만들 때이 모델을 사용합니다"라고 말합니다. 그러나 기본 NSPersistentDocument 코디네이터를 사용하고 있으므로 영구 저장소 코디네이터를 실제로 만들지는 않습니다.
진행하고 오해를 정리하는 방법에 최고에 대한 몇 가지 질문 나는이있을 수 있습니다
A. 내가 NSPersistentDocument에 NSPersistentStoreCoordinator을 획득하고 다음의 라인을 따라 해 새로운 영구 저장소를 추가합니다 :
NSPersistentStoreCoordinator * coordinator = [[myDocument managedObjectContext] persistentStoreCoordinator];
[coordinator addPersistentStoreWithType:NSXMLStoreType
configuration:@"LibraryConfiguration"
URL:url
options:nil
error:&error];
것은 내가 NSPersistentDocument에서 제공하는 기본값을 사용하고 나는이 NSPersistentDocument의 영구 저장소 코디네이터의 다른 구성 정의 ("DocumentConfiguration")를 제공하지 않았기 때문에이 문제가 될 수 있다고 생각 해요. 문서를 저장할 때가 왔을 때 아마 nil을 사용할 것이라고 추측합니다. 그렇다면 이것이 문제가 될까요? 즉, 동일한 구성이 모든 영구 저장소 (이 경우 두 개)에 대해 정의되지 않은 경우 코디네이터는 주어진 구성 정의가있는 엔티티를 저장할 영구 저장소를 어떻게 알 수 있습니까? NSPersistentDocument의 영구 저장소가 생성/저장되기 전에 구성 ("DocumentConfiguration")을 설정할 수 있습니까? NSPersistentDocument의 문서에서 :
Saving a new document adds a store of the default type with the chosen URL and invokes save: on the context. For an existing document, a save just invokes save: on the context.
B. 정의 된 구성을 가진 두 개의 영속 매장을 추가, 내 자신 NSPersistentStoreCoordinator 및 NSManagedObjectContext 인스턴스를 만든 다음 NSPersistentDocument이 NSPersistentStoreCoordinator 및 NSManagedObjectContext 인스턴스를 사용하도록하고, 무료로하는 것이 더 있을까 오래된 것들? 그렇다면 어떻게 addPersistentStoreWithType : ... 메소드에 대한 NSPersistentDocument의 URL을 지정하겠습니까? 제목없는 문서가 저장된 후에 만이 URL을 알 수 있습니다. (이것을 테스트 할 때, 문서가 처음 저장 될 때까지 영속 저장소 조정자에 persistentStores 메소드를 통해 임시 저장 저장소가없는 것으로 나타납니다).
C. 또는 NSPersistentDocument 만 그대로두고 영구 라이브러리 저장소와 관리되는 라이브러리 개체 모델에 독점적으로 사용하는 자체 NSPersistentStoreCoordinator 인스턴스를 만드는 것이 좋습니다. 문서에서는 다중 스레드 코어 데이터 응용 프로그램에서 NSPersistentStoreCoordinator의 여러 인스턴스를 사용해야하지만 다중 스레드 코어 데이터 지원은 필요하지 않습니다. NSPersistentStoreCoordinator의 두 인스턴스를 갖는 것이 바람직합니까? 하나는 라이브러리 용이고 하나는 문서 용입니다 (직관은 이것이 필요하지 않고 올바른 접근이 아니라고 말합니다).
제안 사항?
그러나 NSManagedObjectContext에 대한 설명서에는 영구 저장소 코디네이터를 가져 오거나 설정하는 메서드 만 있으며 추가 할 수는 없습니다. 즉, 내 이해에서 관리 대상 객체 컨텍스트와 연결된 둘 이상의 영구 저장소 조정자를 가질 수는 없습니다. 관리 객체 컨텍스트와 연결된 영구 저장소 조정자는 여러 영구 저장소를 관리 할 수 있지만 그 차이는 다릅니다. – Dalmazio
미안하지만, 나는 썼다. 'addPersistentStoreWithType : configuration : URL : options : error :' – TechZen
으로 영구 저장소 코디네이터에 여러 저장소를 실제로 추가합니다. 그래도이 상황에서는 문제가 계속됩니다 (전역 영구 저장소와 문서 기반 저장소 응용 프로그램)에서 위의 A)에서 설명한대로 NSPersistentDocument의 영구 저장소 조정자에서 addPersistentStoreWithType : ...을 호출합니다. – Dalmazio