Сумма по дочернему объекту при отображении родительского объекта - Базовые данные - PullRequest
1 голос
/ 27 мая 2011

У меня есть две сущности в моем основном приложении данных.Родитель - это Клиент, а дочерний объект - это Заказ, в котором есть детали приобретенных товаров.Теперь то, что я хочу отобразить на моем родительском контроллере представления, это «Сумма элементов», например:

Имя клиента: Общая сумма заказа: £ 90

Я новичок в парадигме Core Data, поэтому, пожалуйста, имейтемне.Вы создаете запрос на выборку, основываясь на одной сущности.FetchResultController моего родительского контроллера извлекает результаты для Customer.Как я могу одновременно получить сумму заказа клиента?

Спасибо

1 Ответ

1 голос
/ 27 мая 2011

Прежде всего, вы не должны думать о сущностях, находящихся в структуре parent-child / tree, если ваш граф объектов активно не применяет такую ​​структуру. В большинстве случаев это не так, и любые два объекта являются структурными равными. Похоже, это относится к вашим объектам «Клиент» и «Заказ».

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

В данном конкретном случае вы выбираете Customer объекты и хотите найти все связанные Order объекты. Ваша модель данных должна выглядеть примерно так:

* * 1010

Теперь, каждый раз, когда вы создаете новый объект Order, вы автоматически связываете его с соответствующим объектом Customer. Когда вы выбираете какой-либо конкретный объект Customer, все связанные с ним объекты Order доступны в отношении Customer.orders.

Если вы хотите суммировать стоимость всех заказов клиента, вы можете использовать оператор сбора следующим образом:

NSNumber *orderSum=[Customer.order valueForKeyPath:@"@sum.orders.cost"];

Отношения очень важны для базовых данных.

...