Come recuperare a livello di codice di selezione della tabella e riga della tabella per Core Data app?

StackOverflow https://stackoverflow.com/questions/2259408

Domanda

Sto cercando di fare un app Core Data in cui quando si seleziona una "Player" in un TableView, e un elenco di tutti i compagni di squadra appare in un secondo tableView, con una colonna per quante volte quei due giocatori hanno giocato sulla stessa "squadra" (un'altra entità).

Questo ha avuto me completamente bloccato, perché mentre io so come riempire una tabella da una matrice normale, utilizzando ArrayControllers e Core Data ha davvero ingombra mio punto di vista della situazione.

Come ci si avvicina questo?

È stato utile?

Soluzione

Il vostro è un problema Associazioni, non un problema Core Data. : -)

Si dovrebbe ottenere una maniglia su cacao Attacchi prima di trattare con core Data. Questo è affermato nella documentazione ed è molto vero.

L'oggetto della sua domanda sembra differire dal corpo, quindi mi rispondere sia.

Mostra del I compagni di squadra

Core Data a parte, suppone che si abbia una tabella che rappresenta le istanze del giocatore. Giocatore ha una squadra. Squadra ha molti giocatori. Pertanto, è dedotto che un esempio di giocatore ha "team.players" (meno se stessa) come compagni di squadra. Se si sta utilizzando Core Data per gestire il modello o no, questo è vero dei rapporti complessivi.

Se andate a leggere attraverso e master cacao Associazioni, troverete che questo non è affatto difficile da configurare utilizzando una base master / dettaglio di installazione (con un controller di array in più per la parte dettaglio, per semplicità ). Il controller di array Master rappresenta tutte le istanze del giocatore, mentre il controller dettaglio matrice rappresenta i compagni di squadra -. O "team.players" di selezione del Master (meno se stesso)

Il controller di array compagni di squadra avrà la sua entità e il contesto oggetto gestito impostato come di consueto (vedi la documentazione). Il "ContentSet" sarà legato al regolatore chiave di "selezione" del controller di array Maestro, con "team.players" come il percorso della chiave del modello.

Il trucco è quello di filtrare giocatore selezionato del controller master utilizzando predicati . Questo si può fare con il controller di array Filtro predicato . Forse uno con un formato di "auto! =% @", Dove "% @" rappresenta la selezione del controller di array Maestro. Lascio predicati (un argomento complicato a sé) a voi. Ricordate, è possibile impostare nel codice ([myController setFilterPredicate: myPredicate]) oppure utilizzando binding. I predicati sono indipendente Core Data pure.

Come Selezione

Poiché il regolatore array è responsabile della matrice tabella rappresenta, è meglio chiedere al controller dell'array quanto la sua selezione è. Un modo è quello di chiedere ai suoi -arrangedObjets per gli oggetti nei propri -selectedIndexes.

NSArray * selectedObjects = [[myArrayController arrangedObjects] objectsAtIndexes:[myArrayController selectedIndexes]];

Si può anche chiedere per i suoi -selectedObjects. Ci sono differenze tra questi due approcci che sono descritti dalla documentazione (API di riferimento e documenti concettuali) che si dovrebbe capire, ma che chiede il controllore è il concetto più importante , indipendentemente dal fatto che si utilizza un NSArrayController o qualche controllo personalizzato che è conforme alla e protocolli.

Avviso: digitato in fretta dopo una serata Sake sociale. Non controllo di eventuali errori. : -)

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