Sortierung nach "transienten" Feldern mit NSFetchedresultController

8

Gibt es eine Möglichkeit, ein "transientes" Feld oder ähnliches zu verwenden und in gewisser Weise entsprechend mit einem NSFetchedResultsController zu sortieren. Ich möchte Folgendes tun:

Ich habe Orte in einer Datenbank gespeichert. Wenn eine Person die Liste öffnet, möchte ich den nächsten Ort oben anzeigen und dann entsprechend der Entfernung sortieren. Aber das hängt natürlich vom Standort des Benutzers ab, daher kann ich kein statisches Feld verwenden. Ich hatte gehofft, ein transientes Feld zu verwenden, wie Sie für die Abschnittsüberschriften verwenden können.

Gibt es jemanden, der eine Lösung oder einen Workaround für diese Situation geben kann?

    
Luuk D. Jansen 10.11.2012, 20:34
quelle

1 Antwort

9

Sie können keine transiente Eigenschaft in einer Abrufanforderung für einen Core Data Store der SQlite-Basis verwenden.

Siehe Abrufen verwalteter Objekte im "Core Data Programming Guide":

  

Sie können nicht mithilfe eines Prädikats abrufen, das auf transienten Eigenschaften basiert   (Sie können jedoch transiente Eigenschaften zum Filtern im Speicher verwenden   dich selber). ... Um es zusammenzufassen, sollten Sie, wenn Sie einen Abruf direkt ausführen   in der Regel keine Objective-C-basierten Prädikate oder Sortierdeskriptoren hinzufügen   die Abrufanforderung. Stattdessen sollten Sie diese auf die Ergebnisse von   das holen.

Sie können eine vorübergehende Eigenschaft für sectionNameKeyPath verwenden, aber selbst dann benötigen Sie einen ersten Sortierdeskriptor für die Abschnitte, der auf einem persistenten Attribut basiert.

Die einzige Problemumgehung ist wahrscheinlich das Abrufen aller Objekte und das Sortieren des abgerufenen Arrays. Aber dann haben Sie natürlich nicht mehr die Vorteile eines abgerufenen Ergebniscontrollers.

    
Martin R 10.11.2012, 21:40
quelle