Mehrere Controller holen (und möglicherweise mehrere Entitäten) ist der falsche Ansatz . Die richtige Lösung besteht darin, den Parameter sectionNameKeyPath
param zu NSFetchedResultController
zu verwenden, um die Ergebnisse in mehrere Abschnitte zu gruppieren. Wenn Sie anders über Ihre Entitäten nachdenken, sind sie vielleicht die gleiche Entität und stattdessen können Sie eine Eigenschaft itemType verwenden, die Sie dann weiterleiten können (und Sie müssen auch danach sortieren). Z.B. Sagen wir, ich hätte Entitäten Hops und Grains, dann könnte ich diese in Ingredient ändern und habe eine int_16 Eigenschaft ingredientType, die ich dann eine enum im Code habe, um die Werte hopType = 0
, grainType = 1
zu speichern. Schließlich ist die Zutat nur ein Name und ein Gewicht, die beide teilen.
Wenn Ihre Entitäten jedoch tatsächlich eine eigene Gruppe von Eigenschaften haben, dann ist die richtige Lösung, eine abstrakte Entität zu erstellen, die über eine Eigenschaft verfügt, die Sie verwenden können, um z. sortOrder, sectionID oder Typ. Wenn Sie dann einen Abruf-Controller erstellen und die abstrakte übergeordnete Entität abrufen, erhalten Sie tatsächlich Ergebnisse, die alle untergeordneten Entitäten enthalten. ZB in der Notes App haben sie eine abstrakte Entität NoteContainer, die Unter-Entitäten Account und Ordner hat.Auf diese Weise können sie einen einzelnen Abrufcontroller verwenden, um das Konto in der ersten Zelle im Abschnitt anzuzeigen, und dann alle Ordner in den folgenden Zellen enthalten. Z.B. Alle iCloud Notes (ist eigentlich das Konto), dann Notes (ist der Standardordner), gefolgt von allen benutzerdefinierten Ordnern, gefolgt vom Papierkorb. Sie verwenden eine sortOrder -Eigenschaft und der Standardordner ist 1, die benutzerdefinierten Ordner sind alle 2 und der Papierkorb ist 3. Dann können sie die Zellen in der von ihnen gewünschten Reihenfolge anzeigen, indem sie dies als Sortierdeskriptor hinzufügen. Es ist ein bisschen anders als Ihre Anforderung, weil sie die zwei Entitäten in verschiedene Abschnitte gemischt haben, aber Sie können es immer noch nur mit anderen Sortiereigenschaften verwenden.
Die Moral der Geschichte ist es, den Rahmen nicht kämpfen, umarmen :-)
Danke für die ausführliche Antwort. Dieser Teil scheint ziemlich einfach zu sein, aber es gibt zwei andere Methoden, über die ich mir nicht sicher bin (was sie tun und ob sie irgendwelche Änderungen brauchen): http://pastebin.ca/1805761 – indragie
Es hängt irgendwie davon ab, was Sie tun App tut; Es ist schwierig für mich zu antworten, ohne viel mehr über die App, das Design usw. zu wissen. Allerdings haben Sie wahrscheinlich eine sichere Wahl, wenn Sie nur diese Methoden haben, um der Tabelle eine reloadData-Nachricht zu senden. – Giao
geschafft, um das mit ein wenig Basteln zu arbeiten :-) Danke – indragie