Pergunta

Eu só percebi há duas maneiras de usar um NSArrayController.

Bind do Controlador de e matriz e adicionar objetos para a matriz. Ou não usar qualquer disposição em tudo e adicionar objetos diretamente ao Controller.

[racesArray addObject: [[Race alloc] initWithName:@"Human"] ];

ou

[myRacesController addObject: [[Race alloc] initWithName:@"Human"] ];

Uma vez que ambos funcionam bem versão para minhas necessidades Gostaria de saber qual é o caminho certo para usá-lo. Eu acho que usando um Array poderia ser melhor, mas desde o NSArrayController também é capaz de armazenar dados por isso que eu não deveria usar esse recurso?

Foi útil?

Solução

Não fale diretamente à matriz como você faz no seu primeiro exemplo. O controlador de matriz não vai descobrir sobre as alterações a menos notificações de KVO você explicitamente post sobre eles, que é uma trabalheira e é fácil esquecer de fazer.

A maneira que eu recomendo é para ligar o controlador de matriz, em seguida, implementar KVC-compliant métodos de acesso de matriz para a sua propriedade, e usá-las em todos os lugares em seu aplicativo (exceto em métodos init e dealloc da classe).

Dessa forma, o objeto pode sofrer mutação a sua própria matriz sem ter que notificações explicitamente pós KVO ou saber sobre o controlador de matriz.

Outras dicas

Ambas as formas são muito bem. Se você não dar-lhe um array, NSArrayController mantém a sua própria.

O NSArrayController é compatível KVO para a ligação com elementos de interface do usuário. Ela também tem os metadados adicionais para uma disposição de objectos tais como SelectedObject. Esses objetos de conveniência não estão disponíveis com NSArray. NSArray é apenas uma matriz com os operadores matriz regular e métodos definidos nele. Use-o se você não tem necessidade de se ligam com elementos de interface do usuário.

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