Базовые данные предназначены для обработки нескольких файлов данных с помощью метода – addPersistentStoreWithType:configuration:URL:options:error:
. Это позволит вам объединить все файлы данных вместе, а затем получить к ним доступ через один NSManagedObjectContext
.
Ваша единственная проблема, и она может даже не быть проблемой для вас, заключается в том, что файлы хранилища не могут напрямую ссылаться друг на друга. Поэтому вам нужно будет ссылаться на данные между файлами "вручную" через уникальные идентификаторы. Однако я подозреваю, что вы уже знаете об этом ограничении.
Ручные отношения
Идея состоит в том, что когда оба объекта в «отношениях» находятся в одной модели и одном файле, Core Data выполняет свою магию и обрабатывает всю ссылочную целостность за вас. Однако когда они находятся в разных файлах и / или моделях, это больше не происходит автоматически.
Решением этой проблемы является использование извлеченного свойства, которое ищет некоторый уникальный идентификатор для извлечения сущности (или сущностей), которой вы хотите быть на другой стороне отношения. Это даст вам «слабые» отношения между файлами.
Одна вещь, на которую следует обратить внимание, делая это. Свойство fetched не обновляется автоматически при изменении чего-либо. Это означает, что при изменении данных, которое может привести к изменению этих отношений, ваше приложение не будет автоматически уведомлено об этом, и вам нужно будет снова запросить это свойство, чтобы получить обновленную информацию о взаимоотношениях.
Надеюсь, это немного прояснит.
Сосуществование извлеченных свойств и отношений
Они могут определенно сосуществовать, но понимают, что это два отдельных свойства. Если вы хотите, чтобы код вашего контроллера воспринимал их как единое целое, я бы предложил создать подкласс для этой сущности, а затем добавить в него вспомогательный метод, который обрабатывает как отношение, так и извлекаемое свойство, а затем сворачивает их в один NSArray
или NSSet
перед возвратом к коду вашего контроллера.