Domanda

Sembra una domanda così stupida, ma come posso trovare una stringa in un NSArray ?

Ho provato a usare

[array indexOfObjectIdenticalTo:myString]

ma ciò richiede che la puntura abbia lo stesso indirizzo.

Qualcuno ha qualche consiglio su come farlo?

È stato utile?

Soluzione

Desideri il metodo indexOfObject: , che cerca l'oggetto inviando a ciascun oggetto dell'array un messaggio isEqual: . / p>

Altri suggerimenti

La risposta di Peter è corretta.

Una nota aggiuntiva; se nell'array sono presenti tonnellate e tonnellate di stringhe, -indexOfObject: eseguirà una ricerca lineare. Questo potrebbe rivelarsi un collo di bottiglia delle prestazioni per il quale dovresti prendere in considerazione l'utilizzo di un altro contenitore; un NSSet o NSDictionary, possibilmente (a seconda del significato delle stringhe).

Un altro gotcha è se le stringhe sono tutte relativamente simili e / o relativamente lunghe.

Naturalmente, non preoccuparti di ottimizzare nulla fino a quando non avrai utilizzato gli strumenti di analisi per dimostrare di avere un problema di prestazioni.

È possibile utilizzare NSOrderSet come contenitore, la vista generale nel riferimento alla classe NSOrderedSet è inferiore:

  

NSOrderedSet e la sua sottoclasse, NSMutableOrderedSet, dichiarano le interfacce programmatiche in una raccolta ordinata di oggetti.

     

NSOrderedSet dichiara l'interfaccia programmatica per insiemi statici di oggetti distinti. Devi stabilire un set di insiemi statici quando viene creato, e in seguito le voci non possono essere modificate. NSMutableOrderedSet, d'altra parte, dichiara un'interfaccia programmatica per insiemi dinamici di oggetti distinti. Un set dinamico & # 8212; o mutabile & # 8212; consente l'aggiunta e la cancellazione > di voci in qualsiasi momento, allocando automaticamente la memoria secondo necessità.

     

Puoi utilizzare i set ordinati in alternativa agli array quando l'ordine degli elementi è importante e le prestazioni nel testare se un oggetto è contenuto nel set sono una considerazione & # 8212; > test per l'appartenenza a un array è più lento di test per l'appartenenza a un set.

Visita http: // developer. apple.com/library/mac/#documentation/Foundation/Reference/NSOrderedSet_Class/Reference/Reference.html

containsObject:

Restituisce un valore booleano che indica se un determinato oggetto è presente nell'array.

  • (BOOL) containsObject: (id) anObject parametri un oggetto Un oggetto.

Valore di ritorno SÌ se nella matrice è presente un oggetto, altrimenti NO.

Discussione

Questo metodo determina se un oggetto è presente nell'array inviando un messaggio isEqual: a ciascuno degli oggetti dell'array (e passando un oggetto come parametro a ciascun isEqual: messaggio).

Dichiarato in

NSArray.h

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