Como recuperar programaticamente a seleção da tabela e a linha da tabela para o aplicativo de dados principal?

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

Pergunta

Estou tentando criar um aplicativo de dados principal no qual você seleciona um "jogador" em uma tabela de tabela, e uma lista de todos os colegas de equipe aparece em uma segunda tabela de tabela, com uma coluna para quantas vezes esses dois jogadores jogaram no mesmo "Equipe" (outra entidade).

Isso me deixou completamente preso, porque, embora eu saiba como preencher uma mesa de uma matriz normal, o uso do ArrayControllers e os dados principais realmente atravessou minha visão da situação.

Como você abordaria isso?

Foi útil?

Solução

O seu é um problema de ligação, não um problema de dados central. :-)

Você definitivamente deve entender Cocos ligações antes de lidar com dados principais. Isso é afirmado nos documentos e é muito verdadeiro.

O assunto da sua pergunta parece diferir do corpo, então eu responderei.

Mostrando os companheiros de equipe

Dados principais à parte, suponha que você tenha uma tabela representando instâncias do jogador. O jogador tem um time. Equipe tem muitos jogadores. Portanto, deduz -se que um exemplo de jogador possui "Team.Players" (menos em si) como companheiros de equipe. Esteja você usando dados principais para gerenciar ou não o modelo, isso é verdade nos relacionamentos gerais.

Se você ler e meter encadernas de cacau, você descobrirá que isso não é difícil de configurar usando um básico Mestre/detalhe Configuração (com um controlador de matriz extra para a parte detalhada, por simplicidade). Seu controlador de matriz principal representa todas as instâncias do jogador, enquanto seu controlador de matriz de detalhes representa os colegas de equipe - ou a seleção do mestre "Team.Players" (menos em si).

O controlador de matriz dos companheiros de equipe terá sua entidade e o contexto de objeto gerenciado configurado como de costume (consulte os documentos). O "conteúdo" estará vinculado à chave do controlador "Seleção" do controlador principal do controlador, com "Team.players" como o caminho da chave do modelo.

O truque é filtrar o jogador selecionado do controlador mestre usando predicados. Isso você pode fazer com o controlador de matriz Filtro predicado. Talvez um com um formato de "self! = %@", Onde " %@" representa a seleção do controlador de matriz mestre. Vou deixar predicados (um tópico complicado para você) para você. Lembre -se, você pode defini -los no código ([MyController setFilterPredicate: MyPredicate]) ou usando ligações. Os predicados são independente de dados principais também.

Obtendo seleção

Como o controlador da matriz é responsável pela matriz que a tabela representa, é melhor perguntar ao controlador de matriz qual é a sua seleção. Uma maneira é pedir a seus objetos -arrangeDobJets em seus objetos -SelectedIndexes.

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

Você também pode solicitar seus -selecionados. Existem diferenças entre essas duas abordagens que são descritas pela documentação (referência da API e documentos conceituais) que você deve entender definitivamente, mas Perguntar ao controlador é o conceito mais importante, independentemente de você usar um NSARRAYController ou algum controlador personalizado que esteja em conformidade com os protocolos.

Isenção de responsabilidade: Digitado apressadamente depois de uma noite social. Não é verificado por erros. :-)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top