Frage

Das fühlt sich wie eine dumme Frage an, aber wie kann ich eine Zeichenfolge in einer finden NSArray?

Ich habe versucht zu benutzen

[array indexOfObjectIdenticalTo:myString]

Das erfordert jedoch, dass der Stich die gleiche Adresse hat.

Hat jemand irgendwelche Tipps dazu?

War es hilfreich?

Lösung

Sie wollen das indexOfObject: Methode, die nach dem Objekt sucht, indem er jedes Objekt in das Array eins sendet isEqual: Botschaft.

Andere Tipps

Peters Antwort ist richtig.

Eine zusätzliche Anmerkung; Wenn Sie Tonnen und Tonnen von Saiten im Array haben, -indexOfObject: wird eine lineare Suche durchführen. Dies kann sich als Leistungsengpass erweisen, für den Sie einen anderen Behälter verwenden sollten. Ein NSSET oder ein NSDictionary, möglicherweise (abhängig von dem, was die Saiten bedeuten).

Ein weiterer Gotcha ist, wenn die Saiten alle relativ ähnlich und/oder relativ lang sind.

Natürlich optimieren Sie nichts, bis Sie die Analyse -Tools verwendet haben, um zu beweisen, dass Sie ein Leistungsproblem haben.

Sie können NSOrderet als Container verwenden.

NSORDEDEDSET und seine Unterklasse, nsmutableDerOrdedSet, deklarieren die programmatischen Schnittstellen einer geordneten Sammlung von Objekten.

NSORDEDEDSET deklariert die programmatische Schnittstelle für statische Sätze verschiedener Objekte. Sie haben die Einträge eines statischen Sets beim Erstellen eingerichtet, und danach können die Einträge nicht modifiziert werden. NSmutableDerOrdedSet dagegen deklariert eine programmatische Schnittstelle für> dynamische Mengen verschiedener Objekte. Eine dynamische - oder veränderliche - set ermöglicht die Zugabe und Löschung> der Einträge jederzeit, wodurch automatisch Speicher nach Bedarf zugewiesen wird.

Sie können geordnete Sets als Alternative zu Arrays verwenden, wenn die Reihenfolge der Elemente wichtig ist, und die Leistung beim Testen, ob ein Objekt im Satz enthalten ist .

Besuch http://developer.apple.com/library/mac/#documentation/foundation/reference/nsorderededset_class/reference/reference.html

enthältObject:

Gibt einen booleschen Wert zurück, der angibt, ob im Array ein bestimmtes Objekt vorhanden ist.

  • (Bool) enthältObject: (id) Anobject -Parameter Anobject Ein Objekt.

RückgabewertJa, wenn Anobject im Array vorhanden ist, sonst nein.

Diskussion

Diese Methode bestimmt, ob AnObject im Array vorhanden ist, indem ein Isqual: Nachricht an die Objekte des Arrays sendet (und Anobject als Parameter an jede ISEquale: Nachricht).

Deklariert in

Nsarray.h

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top