2012-04-05 65 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