A-Z Index von NSFetchedResultsController mit einzelnen Abschnittsüberschriften in jedem Buchstaben?

8

Ich habe ein NSFetchedResultsController , das Daten aus einer Core Data-Struktur, einer Liste von Alben, abruft. Es ist derzeit nach dem Künstler sortiert, also alle A's, B's usw. Ich möchte einen Index hinzufügen, so dass der Benutzer schnell zu jedem Buchstaben springen kann, und ich verwende den Code unten, um es zu tun. Das Problem ist, dass die Abschnittsüberschriften jetzt auch "A", "B", "C" usw. sind, was bedeutet, dass ich die Abschnittsüberschriften in alphabetischer Reihenfolge mit jedem einzelnen Künstler verloren habe ("Adele", "America "," Beatles, The ", etc.)

Ich möchte, dass der Index die Buchstaben A bis Z verwendet, aber die Abschnittsüberschriften, um die Künstlernamen in alphabetischer Reihenfolge anzuzeigen. Das Drücken eines Buchstabens im Index würde dann zum ersten Künstler mit diesem Buchstaben springen. Wie kann ich dies erreichen (Buchstaben im Index, aber ein anderes Attribut für die Titel der Abschnitte)?

BEARBEITEN: Wenn ich mein sectionNameKeyPath auf mein author -Feld setze, ist der AZ-Index sichtbar, aber die Buchstaben werden nicht mit den Namen synchronisiert, wenn ich zum Beispiel auf S tippe , es bringt mich zu Künstlern, die mit AL beginnen, oder das Tippen auf G bringt mich zu AB. Ich bin mir nicht ganz sicher, warum das so ist, vielleicht ist der Abschnittsindex kaputt?

Hier ist der Code, den ich verwende:

In meiner NSManagedObject Unterklasse:

%Vor%

In meinem View Controller, um den FRC zu erstellen:

%Vor%

Und hier ist meine sectionIndexTitlesForTableView: Methode:

%Vor%     
Luke 11.04.2013, 08:25
quelle

2 Antworten

16

sectionNameKeyPath:@"author" ist der richtige Parameter, denn so verhält es sich möchte, dass dein Tisch in Abschnitte gruppiert wird. Die Standardimplementierung

%Vor%

gibt den ersten Buchstaben jedes Abschnittsheaders zurück, so dass kein separates Element erforderlich ist firstLetter Methode.

Für die korrekte Synchronisation vom Abschnittsindex nach die Abschnitte, die Sie müssen die Datenquelle Methode der Tabellenansicht tableView:sectionForSectionIndexTitle:atIndex: implementieren. Die Standardimplementierung in Verbindung mit einem abgerufenen Ergebnis-Controller ist:

%Vor%

Bearbeiten :

Schnell:

%Vor%     
Martin R 11.04.2013, 21:47
quelle
2

Swift 2

Füge dieses var zu deinem NSManagedObject

hinzu %Vor%

Dann benutze es in deinem NSFetchedResultsController -Konstruktor (vergiss nicht zu sortieren mit dem Attribut "real")

%Vor%

Implementieren Sie (mindestens) diese in Ihrer Tabellensicht :

%Vor%     
Alexandre G. 11.05.2016 10:23
quelle