2012-04-05 2 views
0

Ich habe ein Array von Zeichenfolgen. Das Array wurde erstellt, indem eine durch Kommas getrennte Zeichenfolge in mehrere Komponentenzeichenfolgen unterteilt wurde. Ich kann diese Komponenten NSLoggen und sie erscheinen korrekt. Allerdings, wenn ich eine dieser Komponenten testen, für die sehr wider die NSLog es als enthält, zeigt, schlägt der Test noch:Das Testen auf Zeichengleichheit stimmt nicht richtig überein

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

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

Ausgang:

*N/A* 

So klar "N/A" ist es, diese drei Charaktere genau.

schlägt jedoch fehl, dies den Test:

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

Auch dies versucht:

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

Warum es nicht den Test bestehen?

+1

wird, wenn Sie ein Zeichenfolgenliteral „foo“, schreiben sie an einer bestimmten Speicheradresse im Speicher gespeichert wird. Wenn Sie ein String-Literal in einer if-Anweisung verwenden if (etwas == "foo") Sie vergleichen, wenn etwas auf "foo" zeigt nicht, ob der Inhalt von etwas gleich der Zeichenfolge "foo" –

Antwort

2

== bezieht sich auf Adresszeiger sowie Zeichenfolge.

auf Gleichheit überprüfen isEqualToString Funktion versuchen

So sein, dass

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

+0

Rookie-Fehler ist, danke – johnbakers

+0

Happy to help :) U kann diese Antwort als akzeptiert markieren, wenn es Ihnen wirklich geholfen hat :) – DivineDesert

+0

Ich tat es zunächst, aber SO ließ mich 10 Minuten warten, bevor ich es tatsächlich akzeptieren konnte :) – johnbakers

Verwandte Themen