虽然循环工作,但不是if语句?
问题描述:
我在我的代码中有这个while
循环。由于我在控制台中打印了我的i++
,因此该循环似乎工作正常。但由于某种原因,它仅在第一次检查我的if
声明。我只能在名为sectionZeroTitleArray
的NSMutableArray
中添加一个标题。我在这个循环中有很多数组,所以它可能会让人困惑。我会尽我所能解释。虽然循环工作,但不是if语句?
以下是我正在尝试做的: 遍历数组的长度(topicArray)。如果数组的(topicArray)与其他数组的(anotherArray)第一个对象相同,则将与topicArray具有相同索引(titleArray)的对象添加到新的MutableArray(sectionZeroTitleArray)中。
我敢肯定我做了一些愚蠢的事,也许有人一整天都没有盯着这个可以修理我?谢谢,麻烦您了。
while (i < (topicArray.count)) {
if ([topicArray objectAtIndex:i] == [anotherArray objectAtIndex:0]) {
[sectionZeroTitleArray addObject:[titleArray objectAtIndex:i]];
}
NSLog(@"sectionZeroLoopCount: %d", i);
i++;
}
答
你检查指针相等当您使用==
。你确定你要这么做吗?你期待的类型是什么?如果它是一个NSString
,使用isEqualToString:
,否则使用NSObject
的isEqual:
方法:
如果预期的类型是NSString
:
if([[topicArray objectAtIndex:i] isEqualToString:[anotherArray objectAtIndex:0]]) {
//...
}
否则,你应该这样做:
if([[topicArray objectAtIndex:i] isEqual:[anotherArray objectAtIndex:0]]) {
//...
}
答
是的,你在比较指针而不是数值。查看NSString
的文档,特别是比较字符串的isEqualToString:
方法。
在if语句前添加以下内容:'NSLog(@“topicArray value:%@,anotherArray value:%@”,[topicArray objectAtIndex:1],[anotherArray objectAtIndex:0]);' – 2010-09-28 23:00:01
your topicArray contains两次完全相同的对象?如果不是,那很自然,它只会进入if-brackets。当然,你不是指“objectAtIndex:i”? – Phlibbo 2010-09-28 23:00:12
另外,数组中存储的对象的类型是什么?通常,您想要使用isEqual:或isEqualToString:而不是==。 – 2010-09-28 23:01:27