2011-01-09 2 views
2

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

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 Eventhough обе строки равны друг другу. Однако, если я изменю его на не равный! =, Тогда он отобразит объект в UIPickerView. Я не понимаю, что я делаю неправильно. Любая помощь будет большой. Благодарю.

ответ

4

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

[string isEqualToString:myString] 
+0

отлично работает сейчас, спасибо. Вы получаете ответ из-за того, что первым отвечаете правильным ответом. – 0SX

+0

@OSX, поэтому mvds избили меня в считанные секунды. Вот как работает SO :) – Mahesh

+0

;-) смешная игра не так – mvds

4
if (myString == string) // Wrong : It compares address of two NSStrings 

if ([myString isEqualToString:string]) // This compares values of NSStrings 
{ 
} 
+0

+1 Спасибо за вашу помощь. – 0SX

Смежные вопросы