Pergunta

NSDictionary é bom para pares chave-valor, pelo que estrutura de dados é melhor para quando você tem três valores? É o melhor é criar uma classe para esses 3 valores, em seguida, deixar que cada objeto em uma matriz conter instâncias dessa classe?

Para ser mais específico: A estrutura de dados, vamos chamá-lo Pessoa, prevejo tem três valores: (NSString) nome, (int) idade, (BOOL) isAlive

Estes seriam realizadas em array (?). É importante ser capaz de tanto uso o nome como uma chave, e também se referem a todo o bloco com um número, começando em zero.

Foi útil?

Solução

Se você tem uma chave e dois valores, você provavelmente criar uma classe para os dois valores e ainda usar um dicionário.

Se você tem duas chaves e um valor, você provavelmente usar um dicionário nested - isto é, um dicionário onde a chave é a primeira chave e o valor é outro dicionário. A chave para o dicionário aninhado seria a segunda chave, eo valor seria o seu valor real.

ETA:

Agora que você já esclareceu a sua pergunta -. Se você precisa acessar sua coleção tanto pela chave ou por índice inteiro, você ainda pode usar um dicionário

Para obter um item de chave, você faria isso:

[myDict objectForKey:@"joe"];

Para obter um item de índice, você pode usar a matriz AllKeys:

[myDict objectForKey:[[myDict allKeys] objectAtIndex:1]];

Se o único propósito de conseguir as pessoas por índice é looping sobre toda a coleção, você seria melhor fora olhando para usar o método keyEnumerator enumerar as chaves em um loop e usar essas chaves para olhar para cima os valores.

Outras dicas

Você pode usar dados do núcleo para representar relações de dados mais complexos, utilizando um modelo de banco de dados relacional.

Confira site do desenvolvedor da Apple para exemplos e documentação.

Pode parecer alheios à primeira, mas confira a estrutura orientada para o dicionário neste Introdução ao cacau Bindings . (CocoaDevCentral e Scott Stevenson são ótimos recursos para novos desenvolvedores de cacau). A abordagem que ele usa é extremamente flexível e fácil de mudar abaixo da estrada. Usando um dicionário em vez de ivars nem sempre é a melhor solução, mas pode ser um bom ajuste para suas necessidades.

Nota: Como Core Data, Cacau Bindings é também um tema muito complexo. Eu estou sugerindo usando apenas o aspecto organizacional do tutorial, não vai all-out com ligações. : -)

Depende se você está tentando fazer algum tipo de estrutura de dados generalizada ou não. Se os 'três' as coisas são particulares conceitos dentro de seu aplicativo, então você está pode estar caminhando para um domínio do modelo - caso em que você pode ser sábio para encapsular esses valores em uma classe

.

Se você precisar de dicionário como funcionalidade - [NSDictionary objectForKey:]. Etc. - então você ainda pode usar um ou mais dicionários como índices que mapeiam valores-chave para as suas instâncias de classe

Você precisa olhar para CoreData (se você está armazenando-lo) e definindo uma classe para o seu objeto. Os objetos genéricos nativas como NSDictionary não são destinadas para o armazenamento de valores complexos que compõem objetos complexos como uma pessoa.

Person *person = [[Person alloc] init];
person.firstName = @"blah";
person.age = 24;
person.isAlive = YES;

Não é que a descrição de um href="http://www.macdonald.egate.net/CompSci/harray2.html" rel="nofollow noreferrer"> dois variedade dimensional

scroll top