2012-04-01 11 views
1

Update auf die folgende Frage: Wir waren in der Lage, die untergeordnete Entität mit der Vater Entity Abrufanforderung mithilfe der Vater-Kind-Beziehung abzufragen. Beispielabfrage ist wie folgt:Wie erstellt man eine fetchRequest für mehrere Entitäten?

NSPredicate *myPredicate = [NSPredicate predicateWithFormat:@"fatherChild.name LIKE 'fx'"]; 

Nun, was wir versuchen zu tun, das Prädikat oben verwenden, aber eine andere eine andere Bedingung, wo wir Kind für einen bestimmten Väter Namen suchen wollen. Wir benutzten den folgenden Code

NSPredicate *myPredicate = [NSPredicate predicateWithFormat:@"name LIKE 'john' AND ANY fatherChild.name in 'fx'"]; 

Aber das Programm abgestürzt ist, mit der Ausnahme: [__NSCFString countByEnumeratingWithState: Objekte: count:]: Unbekannter Selektor an Instanz gesendet 0xad49c40

durch Beispiele Lesen wir sehen, wir subquery verwenden können aber nicht sicher, was die Syntax für unseren Fall wäre, in dem wir eine Entität mit einer Beziehung von eins zu viele haben. Jede Hilfe wäre willkommen?

Danke.

Frage: Wir haben ein Datenmodell mit drei Einheiten: Vater, Mutter und Kind. Bitte sehen das bild als referenz.

Ein Beispiel Abfrage Anfrage wir auf den Vater Einheit haben ist unten angegeben:

NSEntityDescription *entity = [NSEntityDescription entityForName:@"Father" 
              inManagedObjectContext:managedObjectContext]; 
    [request setEntity:entity]; 

    NSString *attributeName = @"name"; 
    NSPredicate *myPredicate = [NSPredicate predicateWithFormat:@"%K like %@", 
    attributeName, searchField.text]; 

Wir haben ähnliche Abfrageanforderung für Mutter und Kind Einheiten. Wir möchten eine Abfrage erstellen, um die Entitäten Vater und Mutter zu kombinieren. Zum Beispiel wollen wir nach Vaters Name = Mike und Mothers name = Jen in einer einzigen Suchanfrage suchen. Wie machen wir es?

Vielen Dank für Ihre Antwort.

+1

Willst du sagen, dass du zwei verschiedene Arten von Ergebnissen aus einer einzigen Abfrage haben willst, oder dass du nach Kindern suchst, bei denen 'mother.name == foo' und' vater.name == bar'? –

+0

Letzteres ist, was wir versuchen zu tun. Vielen Dank! – user1306828

Antwort

1

Wir haben herausgefunden, dass wir das Problem mit einer SUBQUERY lösen können.

NSPredicate *myPredicate = [NSPredicate predicateWithFormat:@"name LIKE %@ AND fatherMother.name LIKE %@ AND (0!=SUBQUERY(fatherChild,$varChild,$varChild.name=%@)[email protected])",dad.text, mom.text, baby.text];         

Hier fatherMother und fatherChild sind Namen von Beziehungen.

dad.text, mom.text und baby.text sind UITextField Werte.

+0

@tangqiaoboy Ich habe ähnliche Art von Frage hier (http://stackoverflow.com/questions/11934763/nspredicate-on-nested-object-nsset-to-filter-the-result-during-nsfetchquest) ... Ich habe versuchte das folgende Prädikat: [NSPredicate predicateWithFormat: @ "mode = 0 UND ALL (SUBQUERY (Registrierungen, $ varEnrollment, $ varEnrollment.mode = 0))"] aber es hat nicht gut für mich funktioniert, in meinem Prädikat Einschreibungen ist meine Beziehung ... kannst du mir vorschlagen, wo ich falsch liege? – yunas

+0

@yunas Sorry, ich weiß nicht, du solltest 'user1306828' fragen, er ist der Autor der Antwort. Ich helfe ihm einfach, den Code in der Antwort zu formatieren. – tangqiaoboy

Verwandte Themen