У меня есть основанное на документе приложение Core Data, которое работает как есть.Я хотел бы добавить поддержку глобального постоянного хранилища для хранения библиотеки элементов.
Я прочитал большинство соответствующих документов и понимаю, что мне следует использовать конфигурации в моделях управляемых объектов.Я определил две конфигурации: «DocumentConfiguration» и «LibraryConfiguration».Объекты в конфигурации документа находятся только в конфигурации документа, а объекты в конфигурации библиотеки находятся только в конфигурации библиотеки - т. Е. Не перекрываются.
Документы затем говорят: «Затем вы используете эту модель, когдаВы создаете координатор ".Но на самом деле я не создаю свой собственный постоянный координатор хранилища, поскольку я использую стандартный координатор NSPersistentDocument.
Несколько вопросов о том, как лучше поступить, и помогите устранить любые недоразумения, которые могут у меня возникнуть:
A.Получу ли я NSPersistentStoreCoordinator в NSPersistentDocument, а затем добавлю в него новое постоянное хранилище в соответствии с:
NSPersistentStoreCoordinator * coordinator = [[myDocument managedObjectContext] persistentStoreCoordinator];
[coordinator addPersistentStoreWithType:NSXMLStoreType
configuration:@"LibraryConfiguration"
URL:url
options:nil
error:&error];
Я думаю, что это может быть проблемой, поскольку я не предоставил другую конфигурациюопределение («DocumentConfiguration») в координаторе постоянного хранилища NSPersistentDocument, поскольку я использую значение по умолчанию, предоставленное NSPersistentDocument.Я предполагаю, что он, вероятно, будет использовать ноль, когда придет время сохранить документ.И если так, это будет проблемой?Т.е. как координатор узнает, какое постоянное хранилище сохранить объект с данным определением конфигурации, если одинаковые конфигурации не определены для всех постоянных хранилищ (в данном случае два)?Могу ли я установить конфигурацию («DocumentConfiguration») постоянного хранилища NSPersistentDocument до его создания / сохранения?Из документов NSPersistentDocument:
Сохранение нового документа добавляет хранилище типа по умолчанию с выбранным URL-адресом и вызывает save: в контексте.Для существующего документа сохранение просто вызывает save: в контексте.
B.Было бы лучше создать мои собственные экземпляры NSPersistentStoreCoordinator и NSManagedObjectContext, добавив два постоянных хранилища с определенными конфигурациями, а затем заставить NSPersistentDocument использовать эти экземпляры NSPersistentStoreCoordinator и NSManagedObjectContext и освободить старые?Если это так, как бы я указать URL-адрес для NSPersistentDocument для метода addPersistentStoreWithType: ...?Кажется, этот URL известен только после сохранения документа без названия.(При проверке этого, по-видимому, нет никакого временного постоянного хранилища (с помощью метода persistentStores в координаторе постоянного хранилища), пока документ не будет сохранен в первый раз).
C.Или было бы лучше оставить NSPersistentDocument в покое и создать свой собственный экземпляр NSPersistentStoreCoordinator, который я использую исключительно для постоянного хранилища библиотек и объектной модели управляемой библиотеки?В документах сказано, что несколько экземпляров NSPersistentStoreCoordinator должны использоваться в многопоточных приложениях Core Data, но мне не требуется поддержка многопоточных Core Data.Желательно ли иметь два экземпляра NSPersistentStoreCoordinator - один для библиотеки и один для документов (интуиция говорит, что это не обязательно и, возможно, не правильный подход)?
Есть предложения?