Wiem, że Core Data nie jest bazą danych i istnieje wiele różnic. Czy to ten?Dane podstawowe: 3 sprzężenia stołowe?
w bazie danych, to bym powszechnie mają następujące
A - B >> - >> C
"A" ma wiele "B", który ma wiele "C"
zapytanie „Daj mi wszystko, które zostały c.attr =«x»jest łatwo napisane tak:
select * from a, b, c where a.id = b.aid and b.id = c.bid and c.attr = 'X'
W danych Core, chciałbym zrobić to samo, ale przy użyciu predykat jak:
NSPredicate *predicate =
[NSPredicate predicateWithFormat:@"ANY bs.cs.attr = %@", "X"];
[frequest setEntity:entityA];
[frequest setPredicate:predicate];
Rozwiązanie to powoduje błąd: „NSInvalidArgumentException”, powód: "stwardnienie do wielu klawiszy niedozwolone oto
mam rację w interpretacji oznaczać istnieje ograniczenie co Bazy połączenia konferencyjnego -table joins?
Przeszukałem go i nie mogłem znaleźć ostatecznej odpowiedzi.
Moje obecne rozwiązanie tego zapytania wygląda następująco:
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
Czy istnieje lepszy sposób? Z góry dziękuję za uwagę.
ugh, składnia a, b, c join jest zła. –