NSMutableArray For-In Search返回找到的第一个值

时间:2014-09-25 01:28:31

标签: objective-c nsmutablearray for-in-loop

我正在尝试遍历包含不同NSMutableArray@"yes" @"no"值的NSString。该数组包含5个@"yes"值。但是,当我打印出它在数组中搜索的位置的索引值时,它会一直返回@"yes"数组中self.allFavorites的第一个实例 - 无论顺序是什么NSMutableArray是。这是为什么?

for (NSString *favoriteObject in self.allFavorites)
{
    NSUInteger index = [self.allFavorites indexOfObject:favoriteObject];

    if ([favoriteObject isEqual:@"yes"])
    {
        [self.favoriteNames addObject:[self.allNames objectAtIndex:index]];

        NSLog(@"index: %i", index);
    }
}

控制台打印:

2014-09-24 21:23:12.136 AppName[526:87372] index: 2
2014-09-24 21:23:12.136 AppName[526:87372] index: 2
2014-09-24 21:23:12.137 AppName[526:87372] index: 2
2014-09-24 21:23:12.137 AppName[526:87372] index: 2
2014-09-24 21:23:12.137 AppName[526:87372] index: 2

1 个答案:

答案 0 :(得分:0)

发布的代码遍历数组中的每个项目,对于每个项目,它要求数组首次出现某个字符串。它每次都会找到相同的索引。

这是你想要的(迭代数组并自己跟踪索引):

NSUInteger index = 0;
for (NSString *favoriteObject in self.allFavorites) {
    if ([favoriteObject isEqualToString:@"yes"]) {
        [self.favoriteNames addObject:favoriteObject];
        NSLog(@"index: %i", index);
    }
    index++;
}

或者,计算索引,并随时抓取每个项目:

for (NSInteger index=0; index<self.allFavorites.count; index++) {
    NSString *favoriteObject = self.allFavorites[index]; 
    if ([favoriteObject isEqualToString:@"yes"]) {
        [self.favoriteNames addObject:favoriteObject];
        NSLog(@"index: %i", index);
    }
}