Ich habe eine Core Data Entität namens Album; Ein Album hat eine Beziehung zu Song-Entities (Songs genannt), und jeder Song hat eine willkürliche Anzahl von Tag-Entities (in einer Tag-Eigenschaft), Tags haben einen Namen. Jetzt möchte ich überprüfen, ob einer der Songs in einem Album einen Tag enthält; Verwenden eines einzelnen NSPredicate.NSPredicates und doppelte to-n-Beziehungen
Eine Ideen, die in den Sinn kam, war:
[NSPredicate predicateWithFormat: @"ANY (ANY songs).tags LIKE %@", someTagName];
Aber das verursacht einen Fehler zur Laufzeit („Kann die Format-String parsen“). Ich habe verschiedene Varianten ausprobiert, ohne Erfolg.
Gibt es eine Möglichkeit, dies zu tun?
Klingt wirklich gut, ich habe es versucht, aber ich stecke wieder fest. Das passiert mir normalerweise nicht oft ... Jetzt bekomme ich die folgende Ausnahme: *** Beenden App aufgrund der nicht abgefangenen Ausnahme 'NSUnknownKeyException', Grund: '[ valueForUndefinedKey:]: die Entität Das Album ist nicht key-coding-kompatibel für den Schlüssel "songs. @ DistinctUnionOfSets.labels". ' Ich habe versucht, Runde, aber ich konnte nur nicht eine Stelle finden, wo ich die @ distinctUnionOfSets ohne diesen Absturz verursachen könnte. Irgendwelche Ahnung, was ich falsch mache? –
@Julian Sorry, das ist meine Schuld für das Schreiben ohne Test. Da ich kein Core Data-Projekt zum Spielen habe, arbeite ich von ganz oben. Haben Sie @unionOfSets und nicht @distctUnionOfSets versucht? Ich kämpfe immer ein bisschen mit diesen Set-Operatoren. Ich muss oft einen Breakpoint auf einer Zeile wie [album valueForKeyPath: @ "@ songs.tags"] setzen und sehen, was das Ergebnis im Debugger ist. Wenn es sich um eine Reihe von Sets handelt, sollten @ unionOfSets.songs.tags das tun. Wenn es etwas anderes ist, müssen Sie den Schlüsselpfad entsprechend ändern. –