Ich weiß, Core Data ist keine Datenbank und es gibt viele Unterschiede. Ist dieser?Kerndaten: 3 Tabelle beitreten?
In einer Datenbank, würde ich häufig die folgenden
A haben - >> B - >> C
"A" hat viele "B", die viele "C" hat
Die Abfrage: „Gib mir alle A ist die =‚X‘c.attr haben, ist leicht geschrieben wie:
select * from a, b, c where a.id = b.aid and b.id = c.bid and c.attr = 'X'
In Core Data, ich möchte das gleiche tun, sondern mit einem Prädikat wie:
NSPredicate *predicate =
[NSPredicate predicateWithFormat:@"ANY bs.cs.attr = %@", "X"];
[frequest setEntity:entityA];
[frequest setPredicate:predicate];
dies tun führt zu dem Fehler: ‚NSInvalidArgumentException‘, Grund: ‚mehrere zu viele Schlüssel sind hier nicht erlaubt‘
Bin ich richtig eine Einschränkung zu bedeuten, zu interpretieren ist auf welche Datenbanken Multi nennen -table verbindet?
Ich googelte herum und konnte keine definitive Antwort finden.
Meine aktuelle Lösung auf diese Frage wie folgt aussieht:
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
Gibt es einen besseren Weg? Danke im voraus für die Überlegung.
ugh, die a, b, c Join-Syntax ist böse. –