Pergunta

Parece uma pergunta tão estúpida, mas como posso encontrar uma corda em um NSArray?

Eu tentei usar

[array indexOfObjectIdenticalTo:myString]

Mas isso exige que a picada tenha o mesmo endereço.

Alguém tem alguma dica sobre como fazer isso?

Foi útil?

Solução

Você quer a indexOfObject: método, que procura o objeto enviando cada objeto na matriz e isEqual: mensagem.

Outras dicas

A resposta de Peter está correta.

Uma nota adicional; Se você tem toneladas e toneladas de cordas na matriz, -indexOfObject: vai fazer uma pesquisa linear. Isso pode ser um gargalo de desempenho para o qual você deve considerar usar um contêiner diferente; um nsset ou nsdictionary, possivelmente (dependendo do que as cordas significam).

Outro Gotcha é se as cordas são relativamente semelhantes e/ou relativamente longas.

Obviamente, não se preocupe em otimizar nada até que você tenha usado as ferramentas de análise para provar que você tem um problema de desempenho.

Você pode usar o nsorderset como contêiner, a referência de classe Over -the Over na classe NSORDEDEDSET está abaixo:

O NSORDEDEDSET e sua subclasse, NSMutableOrderedSet, declaram as interfaces programáticas para uma coleção ordenada de objetos.

O NSORDEDSET declara a interface programática para conjuntos estáticos de objetos distintos. Você> estabelece as entradas de um conjunto estático quando é criado e, posteriormente, as entradas não podem ser modificadas. O NSMutableOrderedSet, por outro lado, declara uma interface programática para> conjuntos dinâmicos de objetos distintos. Um conjunto dinâmico - ou mutável - permite a adição e a exclusão de entradas a qualquer momento, alocando automaticamente a memória conforme necessário.

Você pode usar conjuntos ordenados como uma alternativa às matrizes quando a ordem dos elementos é importante> e o desempenho no teste se um objeto está contido no conjunto é uma consideração -> testes para a participação de uma matriz é mais lenta do que o teste para a associação de um conjunto .

Visita http://developer.apple.com/library/mac/#documentation/foundation/reference/nSorderedSet_class/reference/reference.html

ContainsObject:

Retorna um valor booleano que indica se um determinado objeto está presente na matriz.

  • (Bool) containsObject: (id) parâmetros do anobject e um objeto.

Valor de retornoSim, se o AnoBject estiver presente na matriz, caso contrário, não.

Discussão

Este método determina se o AnoBject está presente na matriz enviando uma mensagem ISEqual: para cada um dos objetos da matriz (e passando o anobject como o parâmetro para cada um ISequal: mensagem).

Declarado em

Nsarray.h

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