22

How might I check if a particular NSString is presnet in an NSArray?

bryanmac
  • 38,941
  • 11
  • 91
  • 99
Ravi
  • 1,759
  • 5
  • 20
  • 38

3 Answers3

49

You can do it like,

NSArray* yourArray = [NSArray arrayWithObjects: @"Str1", @"Str2", @"Str3", nil];
if ( [yourArray containsObject: yourStringToFind] ) {
    // do found
} else {
    // do not found
}
Janak Nirmal
  • 22,706
  • 18
  • 63
  • 99
7

Iterating or containsObject are order n ways to find.

If you want constant time lookup, you can also maintain a hash table like NSSet or NSHashTable but that increases space but saves time.

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]);   
bryanmac
  • 38,941
  • 11
  • 91
  • 99
1

Depends on your needs. Either indexOfObject if you care about equality (most likely), or indexOfObjectIdenticalTo if you care it's actually the same object (i.e. same address).

Source:

Steven Fisher
  • 44,462
  • 20
  • 138
  • 192