Search through NSArray for string

后端 未结 3 702
心在旅途
心在旅途 2020-12-13 02:56

I would like to search through my NSArray for a certain string.

Example:

NSArray has the objects: \"dog\", \"cat\", \"fat dog\", \"thing\", \"another thing\"

相关标签:
3条回答
  • 2020-12-13 03:16

    It would not work because as per document "indexOfObjectIdenticalTo:" returns the index of the first object that has the same memory address as the object you are passing in.

    you need to traverse through your array and compare.

    0 讨论(0)
  • 2020-12-13 03:21

    Not tested so might have a syntax error, but you'll get the idea.

    NSArray* inputArray = [NSArray arrayWithObjects:@"dog", @"cat", @"fat dog", @"thing", @"another thing", @"heck here's another thing", nil];
    
    NSMutableArray* containsAnother = [NSMutableArray array];
    NSMutableArray* doesntContainAnother = [NSMutableArray array];
    
    for (NSString* item in inputArray)
    {
      if ([item rangeOfString:@"another"].location != NSNotFound)
        [containsAnother addObject:item];
      else
        [doesntContainAnother addObject:item];
    }
    
    0 讨论(0)
  • 2020-12-13 03:33

    If the strings inside the array are known to be distinct, you can use sets. NSSet is faster then NSArray on large inputs:

    NSArray * inputArray = [NSMutableArray arrayWithObjects:@"one", @"two", @"one again", nil];
    
    NSMutableSet * matches = [NSMutableSet setWithArray:inputArray];
    [matches filterUsingPredicate:[NSPredicate predicateWithFormat:@"SELF contains[c] 'one'"]];
    
    NSMutableSet * notmatches = [NSMutableSet setWithArray:inputArray];
    [notmatches  minusSet:matches];
    
    0 讨论(0)
提交回复
热议问题