Почему этот условный оператор не работает с NSUserDefault? - PullRequest
2 голосов
/ 09 января 2011

У меня проблема с получением одного из моих условных операторов для правильного отображения данных.Вот код, с которым я работаю:

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

NSLog(@"%@",myString); //This prints out Name1
NSLog(@"%@",string);   //This also prints out Name1 

if (myString == string) {

    [pickerArray addObject:@"Name Other"];

}

else {
return;
}

Я не могу получить это, если инструкция добавить этот объект в событие UIPicker, хотя обе строки равны друг другу.Однако, если я изменю его на не равное! =, То это отобразит объект в UIPickerView.Я не понимаю, что я делаю не так.Любая помощь будет отличной.Спасибо.

Ответы [ 2 ]

4 голосов
/ 09 января 2011
if (myString == string) // Wrong : It compares address of two NSStrings

if ([myString isEqualToString:string]) // This compares values of NSStrings
{
}
4 голосов
/ 09 января 2011

Для сравнения строковых объектов, не используйте их значения указателя, а сравните, используя

[string isEqualToString:myString]
...