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:
In meinem View Controller, um den FRC zu erstellen:
%Vor% Und hier ist meine sectionIndexTitlesForTableView:
Methode:
sectionNameKeyPath:@"author"
ist der richtige Parameter, denn so verhält es sich
möchte, dass dein Tisch in Abschnitte gruppiert wird. Die Standardimplementierung
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:
Bearbeiten :
Schnell:
%Vor%Swift 2
Füge dieses var
zu deinem NSManagedObject
Dann benutze es in deinem NSFetchedResultsController
-Konstruktor (vergiss nicht zu sortieren mit dem Attribut "real")
Implementieren Sie (mindestens) diese in Ihrer Tabellensicht :
%Vor%Tags und Links objective-c ios core-data indexing nsfetchedresultscontroller