我遇到了if语句不起作用的问题。在第一个代码行之后,变量包含值“(null)”,因为从他的iphone地址簿中选择联系人的用户没有为此联系人设置国家/地区密钥,到目前为止一直很好。
但是如果我检查变量,它就不会是真的,但是值肯定是“(null)”......有人有想法吗?
NSString *country = [NSString [the dict objectForKey:(NSString *)kABPersonAddressCountryKey]];
if(country == @"(null)")
{
country = @"";
}
提前谢谢你
肖恩
答案 0 :(得分:5)
正确的表达方式是:
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:.");
答案 1 :(得分:-2)
这是一个很好的答案我不知道有没有检查nil或null字符串的所有不同方法。