我正在尝试遍历包含不同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
答案 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);
}
}