Jak mogę sprawdzić, czy dany NSString jest presnetem w NSArray?Jak mogę sprawdzić, czy określony NSString jest obecny w NSArray?
19
A
Odpowiedz
43
Można zrobić to tak,
NSArray* yourArray = [NSArray arrayWithObjects: @"Str1", @"Str2", @"Str3", nil];
if ([yourArray containsObject: yourStringToFind]) {
// do found
} else {
// do not found
}
1
W zależności od potrzeb. indexOfObject
, jeśli zależy Ci na równości (najprawdopodobniej) lub indexOfObjectIdenticalTo
, jeśli zależy Ci na tym, aby był to ten sam obiekt (to jest ten sam adres).
Źródło:
6
Iteracja lub containsObject są kolejność n sposobów, aby znaleźć.
Jeśli chcesz mieć stałe wyszukiwanie czasu, możesz również utrzymywać tabelę skrótów, jak NSSet lub NSHashTable, ale to zwiększa przestrzeń, ale oszczędza czas.
NSArray* strings = [NSArray arrayWithObjects: @"one", @"two", @"three", nil];
NSSet *set = [NSSet setWithArray:strings];
NSString* stringToFind = @"two";
NSLog(@"array contains: %d", (int)[strings containsObject:stringToFind]);
NSLog(@"set contains: %d", (int)[set containsObject:stringToFind]);