Domanda

Io sono familiarità con l'uso comune e di base di un NSFetchedResultsController gestire le righe di una tabella, ma ho un problema interessante.

I miei dati è organizzata in quanto tale: Schedule <--- >> Giorno <--- >> percorso. Attualmente ho una vista tabella che ha pianificazioni con un controllore recuperare gestire la creazione e l'eliminazione degli elenchi. Ora voglio creare una vista tavolo per Itinerari / giorni.

Vorrei elencare una rotta su ogni riga, e creare intestazioni di sezione personalizzati che corrispondono alle informazioni all'interno del relativo Giorno. Probabilmente potrei hackero qualcosa insieme da andare a prendere tutte le vie, e poi li sezionamento dalla relazione inversa a lì rispettivo giorno, ma sono preoccupato che poi non sarò in grado di trarre vantaggio da Fetch metodi di controllo delegato per l'aggiornamento del tavolo quando oggetti gestiti cambiano.

Qualcuno ha qualche esperienza con questo? Tutte le idee su come andare avanti?

Grazie.

È stato utile?

Soluzione

Il NSFetchedResultsController è progettato per questo scopo, in modo non c'è bisogno di inventare la ruota.

Quando si inizializza il vostro NSFetchedResultsController, si dovrebbe considerare che specifica il sectionNameKeyPath. Che la proprietà è esattamente ciò che serve a generare automaticamente la sezione per voi.

Nel tuo caso, vorrei fare come segue:

NSEntityDescription: @"Route"
NSPredicate: @"day = %@"
NSFetchedResultsController: sectionNameKeyPath:@"route.day"

Si vede quello che voglio dire, se avete bisogno di più codice per chiarimenti, mi dica.

Altri suggerimenti

Hai bisogno di ricerca in seguito alla ai molti rapporto attraverso la NSSet che viene creato per voi per rappresentare il percorso - percorso >> Day nel database. Dando per scontato che il vostro rapporto nominato isTraversedOn, e il giorno-> Scheda come isScheduled, sarebbe qualcosa di simile:

Route *route=[self.fetchedResultsController.fetchedObjects objectAtIndex:0];
for (Day *day in route.isTraversedOn) {
   Schedule *schedule = day.isScheduled;
   NSLog(@"route is traversed on %@ according to schedule %@",day.name,schedule.name);
}

il NSSet solo salva l'attuale id degli oggetti indicati.

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