Frage

Ich habe Setup-Core Data für ein iPhone App, ohne eine Instanz von NSFetchedResultsController.

Um dies zu tun, habe ich ein erstellt ein Modellklasse alle Kerndatenanforderungen und den Bau von NSFetchRequests / NSPredicates verkapseln.

Dies gehalten alle Core Data spezifischen Code aus meinem UITableViewController.

Jetzt möchte ich NSFetchedResultsController hinzufügen, um eine geschnittene UITableView zu erleichtern bevölkern.

Meine Frage ist diese: In allen Beispielen habe ich die Instanz gesehen NSFetchedResultsController ein Ivar des UITableViewController ist. Dies führt zu allen NSFetchedResults Aussagen im UITableViewController konstruiert.

Ich fühle mich wie diese clutters ist die UITableViewController und fügt eine weitere Verantwortung.

Wie Sie damit umgehen?

Wie sieht Ihr Objektgraph aussehen, wenn NSFetchedResultsController mit?

Wo bauen Sie Ihren NSPredicates?

War es hilfreich?

Lösung 2

Update:

Ich habe in den UITableViewControllers zu konstruieren NSFetchedResultsControllers zurück gegangen.

Ich habe auch eine Kategorie NSManagedObjectContext für Abfragen im Einsatz. Zusätzlich wurde ich mehr Logik in Kategorien auf meinen NSManagedObject Subklassen setzen.

Insgesamt bin ich zufrieden mit der Architektur ich in letzter verwendet haben.


Original Antwort:

Ich denke, ich werde meine eigenen Gedanken über die Sache stellen.

Da NSFetchedResultsController eine Foundation-Klasse ist und keine UIKit Klasse, es schreit Modell zu mir.

Das Gleiche gilt für NSFetchRequest.

Es scheint, dass die Konstruktion eine ein NSFetchRequest auf der Kenntnis der Datenmodell beruht, die Ihnen eine UITableViewController sollte keine Kenntnis argumentieren könnte.

Das führt mich zu mehreren Ideen, was das Objektgraph aussehen sollte.

Eine Möglichkeit ist NSFetchedResultsController Unterklasse, und ist wie eine Fabrik-Klasse zu machen, wo ich vollständig konfigurierte Instanzen NSFetchedResultsController zurückzukehren. Dies hält NSFetchRequest Construction.

Eine andere Möglichkeit ist sehr ähnlich, aber statt NSFetchedResultsController von Subklassen, erstelle ich eine NSObject Unterklasse oder Kategorie, die die gleiche Arbeit übernimmt.

scheinen Beide Optionen zu MVC besser entsprechen als die UITableViewController Verwendung dieser Aufgaben auszuführen.

Andere Tipps

Ich habe ein paar Methoden in meiner Modellklasse, die verschiedenen Arten von Prädikaten gibt, aber ich die tatsächliche NSFetchRequest und NSFetchedResultsController in der UITableViewController Unterklasse aufzubauen. Der Grund, warum ich es tun auf diese Weise ist, da die Benutzeroptionen über welchen Kriterien festlegen er gehören will, das ist also richtig ein View-Controller-bezogene Artikel, und die View-Controller benötigt einen einfachen Zugang zum NSFetchedResultsController.

Wenn der Benutzer hat keine in der Sache sagen, habe ich nur die UITableViewController einen NSFetchedResultsController erhalten, wenn es geladen wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top