У вас явно плохой случай SQL-лихорадки.Вы пытаетесь рассматривать Core Data как оболочку SQL, и это все портит.
Базовые данные не являются SQL.Сущности не являются таблицами.Объекты не являются строками.Атрибуты не являются столбцами.Отношения не объединяются.Базовые данные - это система управления графом объектов, которая может сохранять или не сохранять объектный граф, а может и не использовать SQL для этого далеко за кулисами.Попытка представить Core Data в терминах SQL приведет к тому, что вы полностью неправильно поймете Core Data и приведете к большим трудностям и потерянному времени.
Модель данных Core Data не следует настраивать в зависимости от потребностей пользовательского интерфейса или любого другоготребование не данных.Вместо этого он должен точно моделировать / имитировать объекты, события или условия реального мира, с которыми имеет дело приложение.
В этом случае вы моделируете:
- Тип свойства, который имеет имя и цену.
- Элемент, обозначаемый каким-либо идентификатором
- Связь между одним или несколькими конкретными экземплярами свойств и одним или несколькими экземплярами элемента.
Следовательно, вашей модели данных нужны только две сущности, связанные отношениями.Вам не нужно «соединение», потому что отношения автоматически обрабатывают соединение между двумя объектами.
Самая простая модель имеет только однозначное отношение:
Item{
id:string
property<-->Property.item
}
Property{
name:string
price:number
item<-->Item.property
}
Если каждый объект Item
может иметь несколько связанных Property
объектов, то у вас будет:
Item{
id:string
properties<-->>Property.item
}
Property{
name:string
price:number
item<<-->Item.properties
}
Если у каждого Property
объекта может быть несколько связанных Item
объектов:
Item{
id:string
property<<-->Property.items
}
Property{
name:string
price:number
items<-->>Item.properties
}
Способ настройки дескрипторов сортировки зависит от деталей взаимосвязей и объектов объекта, которые будут отображаться в вашей таблице.дисплей.