Сумма по дочернему объекту при отображении родительского объекта — основные данные

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

Имя клиента: Лео Общая сумма заказа: 90 фунтов стерлингов

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

Спасибо


person Leo    schedule 26.05.2011    source источник
comment
Возможный дубликат stackoverflow.com/questions/5145738/   -  person falconcreek    schedule 27.05.2011


Ответы (1)


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

Это важная концепция, потому что в отличие от обычной древовидной структуры, в графе данных 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
comment
Спасибо за ответ. Вечером дома попробую. - person Leo; 27.05.2011