2009-11-28 11 views
18

To jest głupie pytanie, ale jak znaleźć ciąg znaków w numerze NSArray?Jak znaleźć ciąg w NSArray?

Próbowałem za pomocą

[array indexOfObjectIdenticalTo:myString] 

ale wymaga żądło mieć ten sam adres.

Czy ktoś ma jakieś wskazówki, jak to zrobić?

Odpowiedz

13

Odpowiedź Piotra jest poprawna.

Jedna dodatkowa uwaga; jeśli masz tony i tony ciągów w tablicy, -indexOfObject: zrobi wyszukiwanie liniowe. Może to być wąskie gardło wydajności, dla którego należy rozważyć użycie innego pojemnika; NSSet lub NSDictionary, ewentualnie (w zależności od tego, co oznaczają słowa).

Innym problemem jest to, że wszystkie struny są względnie podobne i/lub stosunkowo długie.

Oczywiście, nie przejmuj się optymalizowaniem czegokolwiek, dopóki nie użyjesz narzędzi do analizy, aby udowodnić, że masz problem z wydajnością.

4

Można użyć NSOrderSet jako kontenera, widok na w NSOrderedSet Class Reference jest poniżej:

NSOrderedSet i jej podklasy, NSMutableOrderedSet, zadeklarować programowe interfejsy do uporządkowanego zbioru obiektów.

NSOrderedSet deklaruje programowy interfejs dla statycznych zestawów różnych obiektów. Po utworzeniu zbioru statycznych zestawów, a następnie nie można> zmienić pozycji. Z kolei NSMutableOrderedSet deklaruje programowy interfejs dla> dynamicznych zestawów różnych obiektów. Zestaw dynamiczny lub zmienny umożliwia dodawanie i usuwanie> wpisów w dowolnym momencie, automatycznie alokując pamięć w razie potrzeby.

Możesz użyć zestawów uporządkowanych jako alternatywy dla tablic, gdy kolejność elementów jest ważna> i wydajność w testowaniu tego, czy obiekt jest zawarty w zestawie, jest uwarunkowana-> testowanie członkostwa w tablicy jest wolniejsze niż testowanie członkostwo w zestawie.

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

1

containsObject:

Zwraca wartość logiczną wskazującą, czy dany obiekt jest obecny w tablicy.

  • (Bool) containsObject (ID) jakisObiekt Parametry jakisObiekt obiektu.

Wartość zwrócona YES jakisObiekt występuje w tablicy inaczej NO.

Dyskusja

ten sposób określa czy jakisObiekt występuje w tablicy wysyłając IsEqual: przesłanie do obiektów tablicowych (i przechodzącej jakisObiekt jako parametr do każdej IsEqual: komunikatów).

zadeklarowane w

NSArray.h