Ich versuche, ein mit Core Data gesichertes UITableView zu implementieren, das die Indexierung unterstützt (z. B. die Zeichen, die auf der Seite erscheinen, und die dazugehörigen Abschnittsüberschriften). Ich habe überhaupt keine Probleme, dies ohne Core Data zu implementieren mit:
%Vor%Ich habe auch kein Problem damit, ein UITableView zu implementieren, das von Core Data unterstützt wird, ohne die Indexierung zu verwenden.
Was ich herausfinden möchte, ist, wie man die beiden elegant kombiniert? Sobald Sie den Inhalt indexieren und neu gruppieren, können Sie den Standard-NSFetchedResultsController nicht mehr verwenden, um Objekte in einem bestimmten Indexpfad abzurufen. Also speichere ich meine Indexbuchstaben in einem NSArray und meinen indizierten Inhalt in einem NSDictionary. Das alles funktioniert gut für die Anzeige, aber ich habe einige Kopfschmerzen, wenn es darum geht, Zeilen hinzuzufügen und zu löschen, insbesondere, wie man diese Methoden richtig implementiert:
%Vor%Weil die Indexpfade, die es mir zurückgibt, keine Korrelation mit denen in den Kerndaten haben. Ich habe add funktioniert, indem ich einfach meine index NSArray und NSDictionary neu erstellen, wenn der Benutzer eine Zeile hinzufügt, aber das gleiche tun, wenn sie eines löschen, stürzt die ganze Anwendung ab.
Gibt es ein einfaches Muster / Beispiel, das ich hier vermisse, damit all das funktioniert?
Bearbeiten: Nur um zu verdeutlichen, weiß ich, dass der NSFetchedResultsController dies out-of-the-box tut, aber ich möchte die Funktionalität wie die App Kontakte replizieren, wobei der Index der erste Buchstabe des Vornamens der Person ist / p>
Sie sollten Ihren CoreData NSFetchedResultsController verwenden, um Ihre Abschnitte / Indizes abzurufen.
Sie können den Abschnittsschlüssel in der Abrufanforderung angeben (ich denke, er muss mit dem ersten Sortierschlüssel übereinstimmen):
Dann können Sie die Abschnittsnamen wie folgt erhalten:
%Vor%Und die Abschnittsindizes sind hier:
%Vor%Änderungen am Inhalt zeigen nur an, dass die Tabelle aktualisiert werden muss:
%Vor% UPDATE
Dies funktioniert nur beim Index- und Schnellindex-Scrolling, nicht bei den Section-Headern.
Siehe diese Antwort "So verwenden Sie das erste Zeichen als Abschnittsname" für weitere Informationen und Details zum Implementieren von Anfangsbuchstaben für Abschnittsüberschriften sowie für den Index.
Tags und Links iphone uitableview core-data nsfetchedresultscontroller cocoa-design-patterns