Domanda

Ho installato Core Data per un app iPhone senza un'istanza di NSFetchedResultsController.

Per fare questo, ho creato una classe di un modello creato per incapsulare tutte le richieste di dati di base e costruire su NSFetchRequests / NSPredicates.

Ciò ha mantenuto tutto il codice specifico Core Data fuori dalla mia UITableViewController.

Ora voglio aggiungere NSFetchedResultsController per rendere popolare un UITableView sezionato più facile.

Il mio problema è questo: In tutti gli esempi che ho visto l'istanza NSFetchedResultsController è un Ivar del UITableViewController. Questo porta a tutte le affermazioni NSFetchedResults costruite all'interno del UITableViewController.

Mi sento come se questo è ingombra l'UITableViewController e aggiunge un'altra responsabilità.

Come si fa a trattare con questo?

Che cosa significa il vostro oggetto grafico simile a quando utilizza NSFetchedResultsController?

Dove si costruisce tuoi NSPredicates?

È stato utile?

Soluzione 2

Aggiornamento:

Sono andato di nuovo a costruire NSFetchedResultsControllers entro i UITableViewControllers.

Ho anche usato una categoria a NSManagedObjectContext per le query. Inoltre, mi è stato mettere più logica all'interno delle categorie sulle sottoclassi NSmanagedObject.

Nel complesso, sono felice con l'architettura ho utilizzato come di ritardo.


Risposta originale:

Credo che vi posterò la mia prendere in materia.

Dato NSFetchedResultsController è una classe Fondazione e non una classe UIKit, si urla modello per me.

Stessa cosa per NSFetchRequest.

Sembra che la costruzione di un un NSFetchRequest si basa sulla conoscenza del modello di dati, che si potrebbe sostenere un UITableViewController dovrebbe avere alcuna conoscenza di.

Questo mi conduce a diverse idee su ciò che l'oggetto grafico dovrebbe essere simile.

Una possibilità è quella sottoclasse NSFetchedResultsController e fare è come una classe di fabbrica, dove torno casi completamente configurate di NSFetchedResultsController. Ciò mantiene NSFetchRequest costruzione.

Un'altra opzione è molto simile, ma invece di sottoclassi NSFetchedResultsController, creo una sottoclasse NSObject o una categoria che gestisce lo stesso lavoro.

Entrambe queste opzioni sembrano conformarsi alle MVC meglio che usare l'UITableViewController per svolgere tali funzioni.

Altri suggerimenti

Ho un sacco di metodi nella mia classe del modello che restituisce vari tipi di predicati, ma io costruisco la NSFetchRequest reale e NSFetchedResultsController nella sottoclasse UITableViewController. La ragione per cui lo faccio in questo modo è perché l'utente può impostare le opzioni su criteri di quello che vuole includere, in modo che sia propriamente un elemento view-controller-correlati, e il controller della vista ha bisogno di un facile accesso alla NSFetchedResultsController.

Se l'utente non ha alcuna voce in capitolo, che avevo appena avere il UITableViewController ottenere un NSFetchedResultsController quando viene caricato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top