2 Stimmen

Warum funktioniert diese bedingte Anweisung mit NSUserDefaults nicht?

Ich habe ein Problem dabei, dass eine meiner bedingten Anweisungen die Daten nicht korrekt anzeigt. Hier ist der Code, mit dem ich arbeite:

    NSUserDefaults *pickerDefaults = [NSUserDefaults standardUserDefaults];
NSString *myString = [pickerDefaults stringForKey:@"userpicker"];
NSString *string = @"Name1";

NSLog(@"%@",myString); //Das gibt Name1 aus
NSLog(@"%@",string);   //Das gibt auch Name1 aus 

if (myString == string) {

    [pickerArray addObject:@"Name Other"];

}

else {
return;
}

Ich kann diese if-Anweisung nicht dazu bringen, dieses Objekt zum UIPicker hinzuzufügen, obwohl beide Strings gleich sind. Wenn ich sie jedoch auf ungleich != ändere, wird das Objekt im UIPickerView angezeigt. Ich verstehe nicht, was ich falsch mache. Jede Hilfe wäre großartig. Danke.

4voto

mvds Punkte 44160

Um String-Objekte zu vergleichen, verwenden Sie nicht ihre Pointer-Werte, sondern vergleichen mit

[string isEqualToString:myString]

4voto

Mahesh Punkte 33527
if (myString == string) // Falsch: Es vergleicht die Adresse von zwei NSStrings

if ([myString isEqualToString:string]) // Dies vergleicht die Werte von NSStrings
{
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X