虽然循环工作,但不是if语句?

问题描述:

我在我的代码中有这个while循环。由于我在控制台中打印了我的i++,因此该循环似乎工作正常。但由于某种原因,它仅在第一次检查我的if声明。我只能在名为sectionZeroTitleArrayNSMutableArray中添加一个标题。我在这个循环中有很多数组,所以它可能会让人困惑。我会尽我所能解释。虽然循环工作,但不是if语句?

以下是我正在尝试做的: 遍历数组的长度(topicArray)。如果数组的(topicArray)与其他数组的(anotherArray)第一个对象相同,则将与topicArray具有相同索引(tit​​leArray)的对象添加到新的MutableArray(sectionZeroTitleArray)中。

我敢肯定我做了一些愚蠢的事,也许有人一整天都没有盯着这个可以修理我?谢谢,麻烦您了。

while (i < (topicArray.count)) { 
    if ([topicArray objectAtIndex:i] == [anotherArray objectAtIndex:0]) { 
    [sectionZeroTitleArray addObject:[titleArray objectAtIndex:i]]; 
    } 
    NSLog(@"sectionZeroLoopCount: %d", i); 
    i++; 
} 
+0

在if语句前添加以下内容:'NSLog(@“topicArray value:%@,anotherArray value:%@”,[topicArray objectAtIndex:1],[anotherArray objectAtIndex:0]);' – 2010-09-28 23:00:01

+0

your topicArray contains两次完全相同的对象?如果不是,那很自然,它只会进入if-brackets。当然,你不是指“objectAtIndex:i”? – Phlibbo 2010-09-28 23:00:12

+1

另外,数组中存储的对象的类型是什么?通常,您想要使用isEqual:或isEqualToString:而不是==。 – 2010-09-28 23:01:27

你检查指针相等当您使用==。你确定你要这么做吗?你期待的类型是什么?如果它是一个NSString,使用isEqualToString:,否则使用NSObjectisEqual:方法:

如果预期的类型是NSString

if([[topicArray objectAtIndex:i] isEqualToString:[anotherArray objectAtIndex:0]]) { 
    //... 
} 

否则,你应该这样做:

if([[topicArray objectAtIndex:i] isEqual:[anotherArray objectAtIndex:0]]) { 
    //... 
} 

是的,你在比较指针而不是数值。查看NSString的文档,特别是比较字符串的isEqualToString:方法。