2012-04-05 62 views
0

我有一个字符串数组。该数组是通过将逗号分隔的长字符串解析为多个组件字符串而创建的。我可以NSLog这些组件,他们显示正确。然而,如果我测试这些部件中的一个为极对象的NSLog示出它作为含有,测试仍然失败:测试字符串的相等性不正确

NSArray*parseLine=[[NSArray alloc] initWithArray:[newline componentsSeparatedByString:@","]]; 

NSLog(@"*%@*"[parseLine objectAtIndex:1]); 

输出:

*N/A* 

所以很明显“N/A”是存在的,这三个字符完全相同。

然而,这未能通过测试:

if ([parseLine objectAtIndex:1][email protected]"N/A") //never passes 

也试过这样:

if ((NSString*)[parseLine objectAtIndex:1][email protected]"N/A") 

为什么它不通过测试?

+1

当你写一个字符串“富”它是在一定的内存地址存储在内存中。如果您在if语句中使用字符串文字if(something ==“foo”),您正在比较是否某物指向“foo”而不是某物的内容是否等于字符串“foo” – 2012-04-05 06:16:16

回答

2

==引用地址指针以及字符串。

要检查平等尝试isEqualToString功能

所以这将是

if([parseLine objectAtIndex:1] isEqualToString:@"N/A"])

+0

菜鸟错误,谢谢 – johnbakers 2012-04-05 06:16:37

+0

高兴地帮助:)ü可以标记这个答案为接受,如果它真的帮助你:) – DivineDesert 2012-04-05 06:23:29

+0

我最初做,但是让我等了10分钟才能真正接受它:) – johnbakers 2012-04-05 06:25:58