iPhone CoreData-beitreten
dies ist mein core data Modell:
Ich versuche, alle LanguageEntries aus einer Datenbank für eine bestimmte Kategorie.Kategoriename und languageset.languageSetName z.B.
NSFetchRequest* fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"LanguageEntry" inManagedObjectContext:del.managedObjectContext];
[fetchRequest setEntity:entity];
NSString* predicateString = [NSString stringWithFormat:@"Category.categoryName = %@ AND LanguageSet.languageSetName = %@",
@"Food", @"English####Spanish"];
fetchRequest.predicate = [NSPredicate predicateWithFormat:predicateString];
NSError *error = nil;
NSArray* objects = [del.managedObjectContext executeFetchRequest:fetchRequest error:&error];
Diese immer 0 zurück Objekten. Wenn ich das Prädikat string entsprechend auf eine Beziehung (z.B. Kategorie.categoryName = Essen oder languageSet.languageSetName = Deutsch####Spanisch) es werden die Daten zurückgeben.
Dies ist unverständlich, jemand kann etwas Licht?
->Ken
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihr denken kann nicht der Kern-Daten als SQL. Es gibt keine solche Sache wie ein "join" in Core Data. In diesem Fall, Ihr versucht zu finden, die Schnittmenge von zwei Mengen von Objekten. In der Nähe einer join-logisch, aber nicht in die details der Implementierung. Und die Programmierung der Teufel steckt immer im Detail.
Versuchen Sie, die logische gleich "==" wie so:
Ich glaube, dass wird Ihr problem lösen.
Das Daten-Modell hat ein Prädikat editor versteckt in ihm. Es kann Ihnen helfen, eingerichtet Prädikate, auch wenn Sie nicht eingebettet in holt im Modell selbst. Wählen Sie einfach eine Einheit, in deinem Fall "LanguageEntity", dann fügen Sie eine Fetch-Anfrage. Bearbeiten Prädikat wird angezeigt, und Sie können den dialog zum erstellen das Prädikat. Es zeigt eine textuelle version des prädikates, die Sie kopieren können in Ihrem code.
Dem Prädikat richtig, war nicht korrekt erstellt wird, müssen Sie die übergabe der Parameter zu predicateWithFormat. Es sollte haben:
Falls Sie sich Fragen, was das macht, ist es, Anführungszeichen um den string-Parameter automatisch, welche werden benötigt, wenn eine Zeichenkette in einem Prädikat. Wenn Sie die query angelegt mit NSString format-Methode, die nicht die erforderlichen Anführungszeichen.