проверьте, не работает ли (страна == @ "(ноль)" - PullRequest
1 голос
/ 31 марта 2010

У меня проблема в том, что оператор if не работает. После первой строки кода переменная содержит значение «(null)», потому что пользователь, который выбрал контакт из своей адресной книги iphone, не устанавливает ключ страны для этого контакта, пока все хорошо.

но если я проверю переменную, она не будет истинной, но значение определенно равно "(null)" ... у кого-нибудь есть идея?

 NSString *country = [NSString [the dict objectForKey:(NSString *)kABPersonAddressCountryKey]];

 if(country == @"(null)")
 {
      country = @"";
 }

спасибо заранее
Sean

Ответы [ 2 ]

5 голосов
/ 31 марта 2010

Правильное выражение будет:

if (country == nil)

, которое может быть сокращено до:

if (!country)

И если вы действительно хотите проверить равенство со строкой @"(null)", вам следует использовать метод isEqual: или isEqualToString:

if ([country isEqualToString:@"(null)"])

Когда вы сравниваете с помощью оператора ==, вы сравниваете адреса объектов, а не их содержимое:

NSString *foo1 = [NSString stringWithString:@"foo"];
NSString *foo2 = [NSString stringWithString:@"foo"];
NSAssert(foo1 != foo2, @"The addresses are different.");
NSAssert([foo1 isEqual:foo2], @"But the contents are same.");
NSAssert([foo1 isEqualToString:foo2], @"True again, faster than isEqual:.");
0 голосов
/ 04 апреля 2010

Это был отличный ответ, я не знал, что были все эти разные способы проверки нулевой или нулевой строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...