2011-01-04 5 views
2

Ich möchte sequenzielle Filter mit NSFetchedResultsController machen. Ziel ist es, zuerst die relevanteren Ergebnisse anzuzeigen.So erstellen Sie sequenzielle Filter mit NSFetchedResultsController

Zum Beispiel: Entity Person: Name - Land

1) Die Personen, bei denen der Name des Suchbegriff enthält.
2) Die Personen, in denen das Land die Suchzeichenfolge enthält.

Mit sequenziell, ich meine, dass ich zuerst die Suchergebnisse 1) und dann 2) haben möchte.

Ich weiß nicht den richtigen Weg, um dies zu tun, weil Sie NSFetchedResultsController mit 1 NSFetchRequest init. Aber hier brauche ich 2 NSFetchRequest. Das andere Problem, das 2 Anforderungen verwendet, ist, dass ich doppelte Elemente mit der zweiten Anforderung generieren konnte.

Ist es möglich, mit NSFetchedResultsController umzugehen? Hier

Dank

ist ein Beispiel:

  • Datensatz 1: Name: Peter Land: Mauritius

  • Datensatz 2: Name: Marc Land: Mauretanien

  • Datensatz 3: Name: Maureen Land: Belgien

Wenn der Benutzer "ma" in der Suchleiste:

ich zuerst den Namen Ergebnisse angezeigt werden sollen und dann die Länderergebnisse.

Also hier, wären die Ergebnisse in dieser Reihenfolge:

  1. Marc ("MA" rc)
  2. Maureen ("MA" ureen)
  3. Peter ("MA" uritius)

Antwort

1

Zwei verschiedene Dinge gehen hier vor sich: Filtern und Sortieren.

können Sie sortieren, indem Sie setSortDescriptors auf Ihrem NSFetchRequest aufrufen. Es braucht eine Reihe von Sortierdeskriptoren, und jeder würde dem Namen oder Land oder was auch immer entsprechen.

Filterung erfolgt durch Prädikate. Verwenden Sie setPredicate: auf Ihrem NSFetchRequest. Sie erhalten nur ein Prädikat, aber es können mehrere Kriterien mit und und oder verwendet werden.

+0

Vielen Dank für die Antwort. Aber es ist nicht wirklich meine Frage. Was ich tun möchte, ist sequentielle Anfragen. Ich habe meine Frage mit einem Beispiel bearbeitet, um relevanter zu sein. – Benoit