Получить записи из родительской таблицы на основе таблицы отношений - CoreData - PullRequest
0 голосов
/ 27 июня 2011

Извините, если заголовок не имеет смысла.

Позвольте мне объяснить это немного подробнее.

У меня есть это приложение CoreData, и я относительно новичок в CoreData. У меня есть две таблицы. Один - это бюджет, а другой - расходы. Таким образом, таблица бюджета имеет поле с именем TotalBudget. Теперь у меня есть разные строки в таблице расходов, которые пользователь вводит с течением времени, и в этой таблице есть поле под названием Индивидуальные расходы.

Теперь я надеюсь получить только те бюджеты, в которых сумма индивидуальных расходов меньше, чем TotalBudget (таблица бюджета). На языке SQL это будет примерно так:

Выберите BudgetName Из бюджета Где TotalBudget <(Выберите сумму (IndividualBudget) из тратить, где BudgetID = Budget.BudgetID) </p>

Как мне добиться этого в основных данных? У меня есть код для извлечения данных из одной таблицы, и я могу использовать NSPredicate для фильтрации записей на основе BudgetStartDate и BudgetEndDate, но как мне добиться чего-то подобного.

Спасибо

1 Ответ

1 голос
/ 27 июня 2011

Предполагая следующую объектную модель:

Budget
--amount (decimal)
--spend (relationship to IndividualSpend object)

IndividualSpend
--amount (decimal)

Это даст вам массив сущностей бюджета, в которых сумма расходов составляет> сумму бюджета:

NSFetchRequest *fetch = [[NSFetchRequest alloc] init];
fetch.entity = [managedObjectModel objectForKey:@"Budget"];
fetch.predicate = [NSPredicate predicateWithFormat:@"spend.@sum.amount > amount"];

NSError *error = nil;
NSArray *results = [context executeFetchRequest:fr error:&error];
if (error) {
  NSLog(@"ERROR: %@", error);
}
NSLog(@"Results: %@", results);
...