Приложение на основе основных данных на основе документов с глобальным постоянным магазином

StackOverflow https://stackoverflow.com/questions/4213153

Вопрос

У меня есть приложение основных данных на основе документов, которое работает как есть. Я хотел бы добавить поддержку для глобального постоянного магазина, чтобы держать библиотеку предметов.

Я прочитал большую часть соответствующих документов и понимаю, что я должен использовать конфигурации в моделях управляемых объектов. Я определил две конфигурации: «DocumentConfiguration» и «libilyConfiguration». Объекты в конфигурации документов находятся только в конфигурации документа, а объекты в конфигурации библиотеки только в конфигурации библиотеки - т. Е. Не совпадают.

Затем документы говорят: «Затем вы используете эту модель, когда вы создаете координатор». Но я на самом деле не создаю свой собственный координатор постоянного магазина, поскольку я использую координатор NSPersistentDocument по умолчанию.

Несколько вопросов о том, как лучше продолжить и помогать прояснить любые недоразумения, которые я мог бы иметь:

A. Будут ли я получить NSPERSISTENTSTORECOODINATOR в NSPersistentDocument, а затем добавить новый постоянный магазин на него по линиям:

NSPersistentStoreCoordinator * coordinator = [[myDocument managedObjectContext] persistentStoreCoordinator];
[coordinator addPersistentStoreWithType:NSXMLStoreType 
    configuration:@"LibraryConfiguration" 
    URL:url 
    options:nil 
    error:&error];

Я думаю, что это может быть проблемой, потому что я не предоставил другое определение конфигурации («DocumentConfiguration») в постоянном координаторе магазина NSPersistentDocument, поскольку я использую по умолчанию, предоставляемый NSPersistentDocument. Я предполагаю, что это, вероятно, будет использовать Nil, когда пришло время сохранить документ. И если так, это будет проблема? Т.е. как бы координатор знал, какой настойчивый магазин сохраняет сущность с заданным определением конфигурации, если одинаковые конфигурации не определены для всех постоянных магазинов (в этом случае два)? Я могу установить конфигурацию (на «DocumentConfiguration») постоянного магазина NspersistentDocument, прежде чем он был создан / сохранен? От документов NspersistentDocument:

Сохранение нового документа добавляет хранилище типа по умолчанию с выбранным URL-адресом и вызывает сохранение: в контексте. Для существующего документа A SAVE просто вызывает сохранение: в контексте.

B. Было бы лучше создать свои собственные экземпляры NSPERSSTENTSTORECOODINACTINATOR и NSMANEDOBJECTCONTELSTELSTELST, добавляя две постоянные магазины с определенными конфигурациями, а затем сделать NSPERSISTENTDOCUумный элемент используйте эти экземпляры NSPERSISTENTSTORECOODINATORATOR и NSMANAGEDOBJECTCONTSTSTSTTEXTSTSTSTECTSTECTSORECORTELECTSORTELECTSORTELECTS и бесплатные экземпляры? Если это так, как бы я указать URL для NspersistentDocument для AddPersistentstoreWithType: ... Метод? Похоже, что этот URL известен только после того, как не был сохранен безразличный документ. (Тестирование этого, не может быть никакого временного постоянного магазина (через метод PersistentStores на постоянном координаторе хранилища) до тех пор, пока документ не будет сохранен в первый раз).

C. Или это было бы лучше оставить только NSPersistentDocument и создать свой собственный экземпляр NSPersistentStoreCoordinator, который я использую исключительно для постоянного библиотечного магазина и модель объекта управляемой библиотекой? Документы говорят, что несколько экземпляров NSPERSISTENTSTSTORECOODINATORATOR должны использоваться в приложениях многопотативных основных данных, но мне не требуется многопоточная поддержка основных данных. Желательно иметь два случая NspersistentStoreCoordinator - один для библиотеки и один для документов (интуиция говорит, что это не нужно и, вероятно, не правильный подход)?

Какие-либо предложения?

Это было полезно?

Решение

Решение, которое я использовал, который работает хорошо, основан на C) выше. Я покидаю NSPersistentDocument, и он только постоянный координатор магазина, и вместо этого создаю свой собственный экземпляр NSPersistentStoreCoordinator, который я использую исключительно для постоянного библиотечного магазина (Global Store).

Я могу установить конфигурацию для хранения в пользовательском значении в случае, если я хочу иметь несколько магазинов, связанных с этим постоянным координатором магазина позже (например, «LibraryConfiguration»). Поскольку библиотечный магазин управляется координатором постоянного магазина, отличный от постоянного координатора магазина NSPersistentDocument, мне не нужно беспокоиться о том, чтобы указать конфигурацию для постоянных магазинов NSPERSSISTENTDOCUум.

Другие советы

Вам необходимо создать отдельный постоянный магазин для каждой конфигурации. Это то, для чего предназначены для настройки, чтобы позволить вам хранить различные объекты в той же модели данных в отдельные постоянные файлы.

Здесь общая ошибка забывает, что постоянный координатор магазина может иметь произвольное количество постоянных магазинов. Все, что вам нужно сделать, - это дублировать Boaterplate Apple для создания создания двух постоянных магазинов с разными именами и / или местоположениями, и каждый с другим именем конфигурации. Затем добавьте как в координатор постоянного магазина.

И вы сделали. Экземпляры сущности для каждой конфигурации пойдут в правильный магазин.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top