2012-04-05 11 views
0

私は文字列の配列を持っています。コンマで区切られた長い文字列をいくつかのコンポーネント文字列に分解して配列を作成しました。私はそれらのコンポーネントをNSLogすることができ、正しく表示されます。私は非常にのNSLogを含むものとしてそれを示してオブジェクトに対するこれらのコンポーネントのいずれかをテストする場合は、テストはまだ失敗:文字列の等価性のテストが正しく一致しません

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

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

出力:

*N/A* 

だから、明確に「N/A」があるが、それら3つの文字を正確に。

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

なぜそれがテストに合格しない:また、これを試してみました

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

はしかし、これはテストに失敗しましたか?

+1

あなたは、文字列リテラル「foo」を書くとき、それが特定のメモリアドレスにメモリに保存されているだろうisEqualToString機能

を試すの等価性をチェックするには

。 if文で文字列リテラルを使用する場合、何かが "foo"という文字列と等しいかどうかを判断するのではなく、何かが "foo"を指しているかどうかを比較しています。 –

答えて

2

==は、文字列と同様にアドレスポインタを指します。だから

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

+0

ルーキーミス、ありがとう – johnbakers

+0

幸せに助けてください:)あなたが本当にあなたを助けたならば、Uはこの答えを受け入れることができます:) – DivineDesert

+0

私は最初に行いましたが、実際にそれを受け入れることができるように私は10分待っていました:) – johnbakers

関連する問題