2012-03-26 15 views
3

Ich habe eine Liste von 'Rechnungen' in den Kerndaten. Für jede Rechnung möchte ich, dass es einen separaten Abschnitt in einem UITableViewController gibt. Ich möchte diese Rechnungen nach Betrag sortiert werden.Kann ich mehr als einen sectionNameKeyPath in einem fetchedResultsController verwenden?

Um dies zu tun, verwende ich einen abgerufenenResultsController. Jede Rechnung hat einen Betrag und eine RechnungsID. Ich habe den sortDescriptor 'Betrag' und den AbschnittNameKeyPath 'billID' gemacht. Dies führt zu Problemen, da didChangeSection bei Bedarf nicht ordnungsgemäß aufgerufen wird.

habe ich einige Graben und kam in diesem Beitrag: Custom Section Name Crashing NSFetchedResultsController

Und es sieht aus wie die Apple-Dokumentation sagt der primäre Sortier Descriptor das gleiche wie die sectionNameKeyPath sein muss.

Ich habe den sortDescriptor als 'Menge' und änderte den sectionNameKeyPath als 'billID'. Dies hat das Verhalten behoben. Wenn jedoch zwei Rechnungen dieselbe "Menge" haben, befinden sie sich im selben Abschnitt, den ich nicht möchte. Kann ich den sectionNameKeyPath trotzdem von zwei Variablen abhängig machen, zum Beispiel 'amount' und 'billID', damit ich für jede Rechnung einen separaten Bereich garantieren kann, aber nach Betrag sortiert?

Vielen Dank im Voraus.

+0

Haben Sie eine Lösung für dieses Problem gefunden? – wod

+0

Leider nicht. – klyngbaek

Antwort

0

Die sortDescriptor Eigenschaft von NSFetchRequest ist eigentlich ein Array. Wir können mehr als einen sortDescriptor darauf basierend auf der Reihenfolge der Eigenschaften übergeben, damit die Ergebnisse sortiert werden sollen.

Versuchen Sie dies hier sortDecriptor s

request.sortDescriptors= @[billIdSortDescriptor, amountSortDescriptor]; 

Bestellung, die request die zum NSFetchedResultsController wird also vergangen NSFetchRequest ist das Ergebnis zuerst von bill-ID und Objekte von Menge mit gleichen billID werden sortiert sortiert werden.

Verwandte Themen