Ich versuche gerade, ein UITableView in meinem Projekt von Core Data mit NSFetchedResultsController zu füllen. Ich verwende eine benutzerdefinierte Suche mit einem Komparator (obwohl ich auch einen Selektor probiert habe und ein identisches Problem hatte):
%Vor%Wenn ich diese Registerkarte betrete, habe ich das gesamte Programm protokolliert und festgestellt, dass der NSFetchedResultsController beim Abrufen nicht einmal in den Vergleichsblock gelangt. Es sortiert es stattdessen mit einer Standardsortiermethode.
Wenn ich ein Objekt mit einem objectName lösche und hinzufüge, wird es jedoch in den Vergleichsblock eingegeben und die Tabelle korrekt sortiert.
Warum sortiert NSFetchedResultsController den Komparator nicht, bis das verwaltete Objektmodell geändert wird?
Hinweise: Ich habe auch versucht, Caching zu deaktivieren und / oder einen Aufruf in viewDidLoad: durchzuführen, aber es scheint, dass es egal ist, wie oft ich hole, aber wann. Aus irgendeinem Grund verwendet es nur meine Sortierung, nachdem das Objektmodell geändert wurde.
Es gibt ein paar Dinge, die ich mir vorstellen kann. Erstens, obwohl dies möglicherweise nicht Ihr Problem ist, können Sie nicht nach vorübergehenden Eigenschaften sortieren. Wahrscheinlicher ist jedoch, dass beim Sortieren in einem Modell, das von einem SQL-Speicher unterstützt wird, der Vergleicher in eine SQL-Abfrage "kompiliert" wird und nicht alle Objective-C-Funktionen verfügbar sind. In diesem Fall müssten Sie nach dem Abrufen im Speicher sortieren.
BEARBEITEN: Sehen Sie dies doc , speziell der Abschnitt Prädikate abrufen und Deskriptoren sortieren.
Tags und Links objective-c iphone core-data cocoa-touch nsfetchedresultscontroller