Я знаю, что Core Data не является базой данных, и есть много различий.Это один?
В базе данных у меня обычно было бы следующее
A - >> B - >> C
"A" имеет много "B", котороеимеет много "C"
Запрос "Дайте мне все A, которые имеют c.attr = 'X', легко записывается как:
select * from a, b, c where a.id = b.aid and b.id = c.bid and c.attr = 'X'
В Core Data я хотел бысделать то же самое, но с использованием предиката, например:
NSPredicate *predicate =
[NSPredicate predicateWithFormat:@"ANY bs.cs.attr = %@", "X"];
[frequest setEntity:entityA];
[frequest setPredicate:predicate];
Это приводит к ошибке: «NSInvalidArgumentException», причина: «здесь не разрешено использование нескольких ключей ко многим»
Am IПравильно ли интерпретировать, что есть ограничение на то, что базы данных называют объединениями в несколько таблиц?
Я погуглил и не смог найти окончательный ответ.
Мое текущее решение этого запроса выглядит так:
NSPredicate *predicate =
[NSPredicate predicateWithFormat:@"ANY cs.attr = %@", "X"];
...
NSArray *bs = //execute fetch
for (B *b in bs) {
//add b.a into an array
}
//return array
Есть ли лучший способ? Заранее спасибо за внимание.