为什么string不等于什么被存储?

这是一个简单而奇怪的问题

if(tableViewNum == @"One") { if ([drinkArray objectAtIndex:0] == currentDate) { [updatedArray addObject:drinkArray]; NSLog(@"MADE THE ELSE1"); } NSLog(@"MADE THE ELSE2"); } else if (tableViewNum == @"Two") { if ([[drinkArray objectAtIndex:0] isEqualToString:yesterdayDate]) [updatedArray addObject:drinkArray]; } else { NSLog(@"MADE THE ELSE %@",tableViewNum); [updatedArray addObject:drinkArray]; } 

在第一个if语句中,我问如果tableViewNum == @“One”

但是我不去if语句的那一部分,即使tableViewNum实际上等于@“One”

正如你可以看到最后的NSLog所有的方式出来的

 MADE THE ELSE One 

但是,如果tableViewNum真的等于一,它会通过if语句不是else语句代码… ?????

你不能用==操作符比较string。 改用isEqualToString

 if([tableViewNum isEqualToString:@"One"]) { // etc. 

…和其他条件相同。 你已经在第二块了。

更具体地说,你不应该使用==比较任何对象。 这只是比较指针。 使用[obj isEqual:otherObj]或NSString isEqualToString:如上所述。