Прежде всего, вы не должны думать о сущностях, находящихся в структуре родитель-потомок/дерево, если ваш граф объектов активно не обеспечивает такую структуру. В большинстве случаев это не так, и любые два объекта структурно равны. Похоже, это относится к вашим объектам «Клиент» и «Заказ».
Это важная концепция, потому что в отличие от обычной древовидной структуры, в графе данных Core Data вы можете войти в граф в любом экземпляре любого объекта и пройти по отношениям в любом направлении, например. Вам не нужно всегда получать объект Customer
для запуска, вы можете, если необходимо, получить объект Order
так же легко.
В данном конкретном случае вы извлекаете Customer
объектов и хотите найти все связанные Order
объекты. Ваша модель данных должна выглядеть примерно так:
Customer{
name:string
orders<-->>Order.customer
}
Order{
item:string
cost:number
customer<<-(required)->Customer.orders
}
Теперь каждый раз, когда вы создаете новый объект Order
, вы автоматически связываете его с соответствующим объектом Customer. Когда вы выбираете какой-либо конкретный Customer
объект, все связанные с ним Order
объекты доступны в отношении Customer.orders
.
Если вы хотите суммировать стоимость всех заказов клиента, вы можете использовать такой оператор сбора:
NSNumber *orderSum=[Customer.order valueForKeyPath:@"@sum.orders.cost"];
Отношения очень важны для Core Data.
person
TechZen
schedule
27.05.2011