我不明白为什么这个for循环不会循环!任何帮助赞赏。出于某种原因,i ++不起作用?
busTypeForSectionsFirst包含多个字母的数组,即A到Z.(每个字母的数量不同)
tempArray是一个从A到Z的数组。
我的日志如下:x26次。
2013-01-08 11:17:53.596 App [969:c07] i = 0
2013-01-08 11:17:53.596 App [969:c07]数组中的i计数= 2
2013-01-08 11:17:53.596 App [969:c07]搜索对象 - A
NSCountedSet *countedSet = [[NSCountedSet alloc] initWithArray:busTypeForSectionsFirst];
NSLog(@"%@", countedSet);
for (int i=0; i<=26; i++) {
if (![countedSet countForObject:[tempArray objectAtIndex:i]]) {
NSLog(@"Nil");
NSLog(@"i = %i", i);
NSLog(@"Count of i in array = %i", [countedSet countForObject:[tempArray objectAtIndex:i]]);
NSLog(@"Object searched - %@", [tempArray objectAtIndex:i]);
return 0;
} else {
NSLog(@"i = %i", i);
NSLog(@"Count of i in array = %i", [countedSet countForObject:[tempArray objectAtIndex:i]]);
NSLog(@"Object searched - %@", [tempArray objectAtIndex:i]);
return 0;
return [countedSet countForObject:[tempArray objectAtIndex:i]];
}}
return 0;
答案 0 :(得分:1)
不确定您要实现的目标。但你可以试试这段代码,
NSCountedSet *countedSet = [[NSCountedSet alloc] initWithArray:busTypeForSectionsFirst];
NSLog(@"%@", countedSet);
NSInteger returnVal = 0;
for (int i=0; i<=26; i++) {
if (![countedSet countForObject:[tempArray objectAtIndex:i]]) {
NSLog(@"Nil");
NSLog(@"i = %i", i);
NSLog(@"Count of i in array = %i", [countedSet countForObject:[tempArray objectAtIndex:i]]);
NSLog(@"Object searched - %@", [tempArray objectAtIndex:i]);
} else {
NSLog(@"i = %i", i);
NSLog(@"Count of i in array = %i", [countedSet countForObject:[tempArray objectAtIndex:i]]);
NSLog(@"Object searched - %@", [tempArray objectAtIndex:i]);
returnVal = [countedSet countForObject:[tempArray objectAtIndex:i]];
//break; //probably a break statement here is what you are looking for
}
}
return returnVal;
如果在循环中放入一个return语句,它将从那里退出并从方法返回。在您的情况下,您尝试以if
和else
条件返回,这将导致for
循环仅执行一次。由于您在此之前添加了return [countedSet countForObject:[tempArray objectAtIndex:i]];
,因此return 0;
永远不会被执行。
如果要打破for循环,则需要使用break;
语句。 return
将从方法返回,并且不会执行下面的其余代码。
答案 1 :(得分:0)
它不会循环,因为在if
语句的true和false部分,从函数返回!
我怀疑return 0
声明可能是多余的,因为这个小小的美丽:
return 0;
return [countedSet countForObject:[tempArray objectAtIndex:i]];
只会永远返回0
- 第二个return
无法访问的代码。
但是,根据给出的信息,我无法确定。我的评论仍然存在 - 由于所有代码路径中的return
语句,循环只会迭代一次。
答案 2 :(得分:0)
经典的复制和粘贴错误!其中一个return 0
必须删除。猜猜哪一个!